Skip to content

Commit 33ee6b8

Browse files
committed
fix: Added @SuppressLint("AddJavascriptInterface"); Added @SuppressLint("AddJavascriptInterface")
Addresses #762
1 parent 8f0f05f commit 33ee6b8

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

agentweb-core/src/main/java/com/just/agentweb/AgentWebView.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import java.net.URLEncoder;
4444
import java.util.HashMap;
4545
import java.util.Map;
46+
import android.annotation.SuppressLint;
4647

4748

4849
/**
@@ -70,36 +71,44 @@ public AgentWebView(Context context, AttributeSet attrs) {
7071

7172
/**
7273
* 经过大量的测试,按照以下方式才能保证JS脚本100%注入成功:
74+
@SuppressLint("AddJavascriptInterface")
7375
* 1、在第一次loadUrl之前注入JS(在addJavascriptInterface里面注入即可,setWebViewClient和setWebChromeClient要在addJavascriptInterface之前执行);
7476
* 2、在webViewClient.onPageStarted中都注入JS;
7577
* 3、在webChromeClient.onProgressChanged中都注入JS,并且不能通过自检查(onJsPrompt里面判断)JS是否注入成功来减少注入JS的次数,因为网页中的JS可以同时打开多个url导致无法控制检查的准确性;
7678
*
79+
@SuppressLint("AddJavascriptInterface")
7780
* @deprecated Android 4.2.2及以上版本的 addJavascriptInterface 方法已经解决了安全问题,如果不使用“网页能将JS函数传到Java层”功能,不建议使用该类,毕竟系统的JS注入效率才是最高的;
7881
*/
7982
@Override
8083
@Deprecated
84+
@SuppressLint("AddJavascriptInterface")
8185
public final void addJavascriptInterface(Object interfaceObj, String interfaceName) {
8286

8387
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
88+
@SuppressLint("AddJavascriptInterface")
8489
super.addJavascriptInterface(interfaceObj, interfaceName);
8590
Log.i(TAG, "注入");
8691
return;
8792
} else {
8893
Log.i(TAG, "use mJsCallJavas:" + interfaceName);
8994
}
9095

96+
@SuppressLint("AddJavascriptInterface")
9197
LogUtils.i(TAG, "addJavascriptInterface:" + interfaceObj + " interfaceName:" + interfaceName);
9298
if (mJsCallJavas == null) {
9399
mJsCallJavas = new HashMap<String, JsCallJava>();
94100
}
95101
mJsCallJavas.put(interfaceName, new JsCallJava(interfaceObj, interfaceName));
96102
injectJavaScript();
97103
if (LogUtils.isDebug()) {
104+
@SuppressLint("AddJavascriptInterface")
98105
Log.d(TAG, "injectJavaScript, addJavascriptInterface.interfaceObj = " + interfaceObj + ", interfaceName = " + interfaceName);
99106
}
107+
@SuppressLint("AddJavascriptInterface")
100108
addJavascriptInterfaceSupport(interfaceObj, interfaceName);
101109
}
102110

111+
@SuppressLint("AddJavascriptInterface")
103112
protected void addJavascriptInterfaceSupport(Object interfaceObj, String interfaceName) {
104113
}
105114

@@ -197,6 +206,7 @@ && getSettings() == null) {
197206
}
198207

199208
/**
209+
@SuppressLint("AddJavascriptInterface")
200210
* 添加并注入JavaScript脚本(和“addJavascriptInterface”注入对象的注入时机一致,100%能注入成功);
201211
* 注意:为了做到能100%注入,需要在注入的js中自行判断对象是否已经存在(如:if (typeof(window.Android) = 'undefined'));
202212
*

0 commit comments

Comments
 (0)