- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我得到 添加的接口(interface)@android.webkit.JavascriptInterface 中的所有方法都没有。它们在 Api 级别 17 中不可见。
addJavascriptInterface 方法出现编译错误。
我已经指出了下面代码中的错误行:
WebView代码:
import android.webkit.JavascriptInterface;
webView = (WebView) findViewById(R.id.load_url);
webView.getSettings().setJavaScriptEnabled(true);
if (new File(url).exists()) {
webView.loadUrl(FILENAME_PREFIX + url);
Log.d("fileurl", "" + FILENAME_PREFIX + url);
}
webView.addJavascriptInterface(new Object() { --->None of the methods in the added interface @android.webkit.JavascriptInterface.They will not be visible in Api level 17.
@JavascriptInterface
public void performClick() {
Intent intRef=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intRef);
}
}, "ok");
HTML 代码:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div>
<button type="button" onclick="ok.performClick();">OK</button>
</div>
</body>
</html>
我正在使用 minSdkVersion 11 和 targetSdkVersion 22。我在之前的方法中调用了@JavascriptInterface。您可以在上面的代码中看到这一点。
任何人都可以帮助我。谢谢。
最佳答案
来自 Android 4.2 文档:
Caution: If you've set your targetSdkVersion to 17 or higher, you must add the @JavascriptInterface annotation to any method that you want available your web page code (the method must also be public). If you do not provide the annotation, then the method will not accessible by your web page when running on Android 4.2 or higher.
您必须在您的类中使用@JavascriptInterface 注释您希望从 Javascript 访问的每个方法。
编辑:我已经在我的代码中实现了这种方式:
webView.addJavascriptInterface(new WebAppInterface(this), "ok");
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void performClick() {
Intent intRef=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intRef);
}
}
希望对您有所帮助!
关于android - Html Button OnClick 在 Android 中移动另一个 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063705/
我遇到过这个 html: 上面的html和这个有什么区别: 最佳答案 来自MDN page on the tag : 对于 type 的属性标签,可能的值是: 提交:按钮将表单数据提交给服务器
Button button= (Button) findViewbyID(R.id.button); 和 Button button = new Button(this); 有什么区别? 最佳答案 有
我是一名优秀的程序员,十分优秀!