适用于Android Jelly Bean及以上版本的Webview的JavascriptInterface

时间:2015-06-18 02:46:47

标签: java javascript android webview

我以前在我的移动应用程序上有一个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和更高版本一起使用?

1 个答案:

答案 0 :(得分:3)

问题是您没有在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;
    }
}