gpt4 book ai didi

javascript - 使用 JavascriptInterface 时未捕获的类型错误

转载 作者:可可西里 更新时间:2023-11-01 18:58:01 25 4
gpt4 key购买 nike

我目前正在 web View 中以 HTML 的形式向用户显示一堆数据。我在每个条目下方都有一些链接,单击这些链接应该在我的应用程序中调用一个方法。 Android WebView 的 javascript 接口(interface)似乎是处理这些事情的最佳(唯一?)方式。但是,每当我单击链接时,都会收到此错误消息:ERROR/Web Console(6112): Uncaught TypeError: Object [my namespace]@4075ff10 has no method 'edit' at [base URL]:55

我声明了以下接口(interface):

public class JavaScriptInterface {
Context context;

JavaScriptInterface(Context c) {
context = c;
}

public void edit(String postid) {
Log.d("myApp", "EDIT!");
//do stuff
}
}

然后我将它添加到我的 WebView 中:

final WebView threadView = (WebView) findViewById(R.id.webViewThread);
threadView.getSettings().setJavaScriptEnabled(true);
threadView.addJavascriptInterface(new JavaScriptInterface(this), "Android");

最后,我在我的 HTML 中调用它如下:

<div class="post-actions">
<div class="right">
<a onClick="Android.edit('4312244');">Edit</a>
</div>
</div>

真正的关键在于当我通过模拟器或手机的 adb 连接调试我的应用程序时,这一切都有效。当我构建并发布该应用程序时,它出现了故障。

我已经无计可施了。任何帮助或建议将不胜感激!

最佳答案

我的 2.3.3 手机也有同样的问题。但据我所知,一个应用程序可以运行,而另一个应用程序不能运行,因此我对这种解决方法并不满意。我发现了我的两个应用程序的区别。损坏的 JavaScriptInterface 使用 Proguard。经过一番搜索,我找到了 solution .

小结:接口(interface)JavascriptCallback,由JavaScriptInterface实现,在proguard.conf中添加了Proguard的规则:

public interface JavascriptCallback {

}

public class JavaScriptInterface implements JavascriptCallback {
Context mContext;
/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}

proguard.cfg:

-keep public class YOURPACKAGENAMEHERE.JavascriptCallback
-keep public class * implements YOURPACKAGENAMEHERE.JavascriptCallback
-keepclassmembers class * implements YOURPACKAGENAMEHERE.JavascriptCallback {
<methods>;
}

关于javascript - 使用 JavascriptInterface 时未捕获的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7424510/

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