【问题标题】:JavascriptInterface for Webview on Android Jelly Bean and aboveAndroid Jelly Bean 及以上版本的 Webview 的 JavascriptInterface
【发布时间】:2015-06-18 10:57:50
【问题描述】:

我曾经在我的移动应用程序上有一个 javascript 界面,它允许我从我的 webview 将数据捕获回应用程序,它曾经可以工作,但最近当我升级应用程序以处理棒棒糖时,它开始出现关于 javascriptInterface 的问题.

这是我当前的 javascriptInterface 代码:

webView = (WebView)findViewById(R.id.webView);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new MyBrowser());
webView.getSettings().setBuiltInZoomControls(false);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.getSettings().setJavaScriptEnabled(true);
webView.setHorizontalScrollBarEnabled(false);

@JavascriptInterface
public boolean doSomething(String employeeID){

    RunSearch(employeeID);
    Log.d("runsearch", "running search");
    return true;
}
public class WebAppInterface {

    Context mContext;

    WebAppInterface(Context c) {
        mContext = c;
    }
}

我的网页存储在本地

错误表明:

添加的接口中没有一个方法被注释 @android.webkit.JavascriptInterface;它们在 API 中不可见 17

我查看了文档,但我应该怎么做才能使其与 Jelly Bean 及更高版本一起使用?

【问题讨论】:

    标签: java javascript android webview


    【解决方案1】:

    问题是您没有在 WebAppInterface 中公开任何可调用的方法。我从注释中假设您打算公开 doSomething 方法?如果是这样,只需将其移入界面即可。

    public class WebAppInterface {
    
        Context mContext;
    
        WebAppInterface(Context c) {
            mContext = c;
        }
    
        @JavascriptInterface
        public boolean doSomething(String employeeID){
    
            RunSearch(employeeID);
            Log.d("runsearch", "running search");
            return true;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      相关资源
      最近更新 更多