添加的接口中的所有方法都没有使用@ android.webkit.JavascriptInterface注释; 它们在API 17中不可见

Gau*_*ora 8 javascript java android webview

我正在使用webview并希望加载一个JScode以显示在该webview中.但是我遇到了API16以上的问题.它从不加载JS页面.它给了我一个错误:

这是我的代码:

        @JavascriptInterface

    public void loadWebviewUrl(){
            Map <String, String> extraEncryptionHeaders = new HashMap<String, String>();
            extraEncryptionHeaders.put("X-APP-DEVICETYPE", "ANDROID"); 
            appVersionname=CommonMethods.getAppVersion(WebPayUActivity.this);
            extraEncryptionHeaders.put("X-APP-APPVERSIONNAME", appVersionname); 
            extraEncryptionHeaders.put("X-DEVICE", Constant.ANDROIDID); 
            extraEncryptionHeaders.put(Constant.HEADER_SECURITY_KEY, Constant.SECURITY_HASH_VALUE);
            mWebView.loadUrl(mPayUrl, extraEncryptionHeaders);

**//getting error in this line that has been mentioned above**
            mWebView.addJavascriptInterface(new Wscript(WebPayUActivity.this),
                    "Android");
            screenDpi=CommonMethods.getResoltuion(this);
            mWebView.setWebViewClient(new MyWebViewClient(this));

            mImageView.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    customAlertDialog();    
                }
            });
            mWebView.setWebChromeClient(new WebChromeClient());
        }
Run Code Online (Sandbox Code Playgroud)

在阅读了不同站点的解决方案后,我知道要添加注释.但在编写注释后,错误仍然是相同的.

任何人都可以检查并帮助我

谢谢

Cün*_*eyt 15

你必须添加

@SuppressLint("JavascriptInterface")
Run Code Online (Sandbox Code Playgroud)

您使用webView对象的公共方法.


Lei*_*Guo 7

您必须添加@JavascriptInterface到您的Wscript类的公共方法.

如果您的代码被隐藏proguard,您还应该添加-keepattributes *Annotation*到配置文件中proguard.