gpt4 book ai didi

Android Jelly Bean 及以上版本上 Webview 的 JavascriptInterface

转载 作者:行者123 更新时间:2023-11-28 19:09:52 26 4
gpt4 key购买 nike

我的移动应用程序上曾经有一个 javascript 接口(interface),它允许我将数据从 webview 捕获回应用程序,该应用程序曾经可以工作,但最近当我升级应用程序以处理 Lollipop 时,它开始出现有关 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;
}
}

我的网页存储在本地

错误表明:

None of the methods in the added interface have been annotated with @android.webkit.JavascriptInterface; they will not be visible in API 17

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

最佳答案

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

关于Android Jelly Bean 及以上版本上 Webview 的 JavascriptInterface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com