- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我知道还有其他帖子解决了同样的问题,我想我已经严格按照他们的要求去做了,但遗憾的是无济于事。我正在尝试学习如何让我的应用程序与 javascript 交互。我只想能够从我的 javascript 返回一个值到我的 Activity 。
这是我的 Activity :
public class JSExample extends Activity {
WebView mWebView;
String mString;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView)findViewById(R.id.mWebView);
mWebView.addJavascriptInterface(new ClsAccessor(), "accessor");
String html = getAssetsContent("jsinterface.html");
mWebView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
// Log.d("YO!", mString);
}
private String getAssetsContent(String filename){
.....
}
private void closeStream(BufferedReader stream) {
.....
}
class ClsAccessor{
public void setValue(String value){
JSExample.this.mString = value;
}
}
这是我的 WebView 加载的 html 文件,其中包含我要运行的 javascript:
<!DOCTYPE html>
<html>
<head>
<script language="javascript">
accessor.setValue('Hello!');
</script>
</head>
<body>
<h1>Testing</h1>
</body>
</html>
这是行不通的。当我用 "Log.d("YO!, mString);"运行代码时未注释我得到一个空指针异常,这意味着 javascript 从未为 mString 赋值。我做错了什么?
最佳答案
这可能不正确,我将不得不仔细检查,但这可能是由于引用丢失..
尝试使您的 ClsAccessor
引用成员级别 one..
public class JSExample extends Activity {
...
ClsAccessor _accessor = new ClsAccessor();
...
public void onCreate(Bundle savedInstanceState) {
...
mWebView.addJavascriptInterface(_accessor, "accessor");
...
此外,如果您逐行调试,setValue()
是否会在托管代码中被调用?
对于它的值(value),我的代码正在按照我上面描述的方式执行,并且托管接口(interface)的脚本工作正常,但是我目前无法测试并查看是否也没有对该类的引用有效。
关于javascript - Android-使用 addJavaScriptInterface 从 Javascript 返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5314492/
是否可以将js中的任意函数对象传递给java端,让java调用那个js对象? (回调) 例如,(access是已经注册调用Java函数的函数) access(function(blabla){
我知道要从 Javascript 与 Java 交互,您必须使用 webview 中的 addjavascriptInterface 方法注入(inject) Java 对象。 这是我面临的问题。 我
我正在尝试向当前加载的 html 添加一些新内容(在 webview 中),这不是问题所在,我可以通过 javascript 向主体添加新标签,假设这样: loadUrl("javascript:(f
我在我的应用程序中使用 addJavascriptInterface 从 Javascript 弹出一个共享窗口。 问题是:当我在开发环境中使用我的手机时,我可以看到弹出窗口。但同样在发布到谷歌和下载
我需要从 Web 响应中调用我的 java 函数: 这是我的代码,请指出我哪里出错了 Activity : @InjectView(R.id.loadCardWebView) android.
AndroidStudio 开始向我显示警告“不应调用 WebView.addJavascriptInterface”。但是这种方法存在并且没有被弃用。它出什么问题了?可能是我遗漏了什么,现在有更好的
我试图跟踪代码以查看 WebView 上的 addJavascriptInterface() 是如何实现的,但它深入到 native 代码中,这基本上削弱了我理解正在发生的事情的能力。 具体来说,我正
当在 html 页面中单击表格行时,我试图从我的 Web View 中获得回调。我的 Activity 如下: public class LocalizationTestActivity exten
我使用以下代码在 Android 中的 JavaScript 文件中提取字符串变量: 这是我的 JavaScript 文件: //EDIT: clsVariable = "vikrant"; fun
我想使用 phonegap cordova 在 android 中构建 native 应用程序。我找到了 2 种方法让我的 html 文件可以与我的 java 文件通信。我可以使用 appView.a
我们已经构建了 PhoneGap 插件来从我们的 Javascript 代码返回到我们的 Java 代码。我知道 Android 也有一个 addJavascriptInterface 函数。此处的文
我正在尝试将 javascript 接口(interface)添加到我找到的 WebView。我遵循了所有标准教程,但仍然在为这项任务而苦苦挣扎。添加 javascript 接口(interface)
addJavascriptInterface让我们将 java 对象注入(inject)到 Android web View 的 javascript 中。关于每个 javascript 类型可以在该
我正在使用 jQuery Mobile 和 PhoneGap 开发 Android 应用程序。这是我的 Activity : public class xxx extends DroidGap {
谷歌的 security guidelines对于 Android 应用程序开发人员具有以下内容: WebViews do not use addJavaScriptInterface() with
您可能知道,Android 的 WebView 有一个名为 addJavascriptInterface() 的方法,它可以将 Android JAVA 对象导入 Javascript 上下文。 问题
我可以从我的 phonegap java 脚本函数和 android 2.2 中使用 java 函数但相同的代码未在 API 17 上运行。我应该怎么做才能从 API 17 中的 java 脚本调用
我正在使用 MonoDroid,并希望可以从我的 WebView 调用 C# 代码。 我正在这样做(C#): protected override void OnCreate(Bundle bundl
我可以通过 WebView.addJavascriptInterface 接口(interface)接收一个 Object 吗?像这样的东西: public class JavaScriptInter
单击 HTML 按钮时,我无法在 Cordova webview 中打开链接。它显示“CordovaWebView 类型未定义方法 addJavascriptInterface(WebViewActi
我是一名优秀的程序员,十分优秀!