我在我的应用程序中使用addJavascriptInterface从Javascript弹出一个共享窗口。
问题是:当我在开发环境中使用移动设备时,我可以看到弹出窗口。但是在发布到谷歌和下载后不起作用。我正在使用Android 4.2 Jellybean手机进行测试。
我尝试了几种方法,但没有任何效果。
--------- ----------的onCreate
wvMainMenu =(WebView)findViewById(R.id.wvMainMenu);
wvMainMenu.getSettings().setJavaScriptEnabled(true);
wvMainMenu.getSettings().setLightTouchEnabled(true);
wvMainMenu.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wvMainMenu.addJavascriptInterface(new WebappInterface(this), "Android");
------- Javascript内部--------------
function share_it(id){
Android.share_this(msg[id]);
}
----- WebappInterface.java --------
@JavascriptInterface public void share_this(String str) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
String sharedText = "Text to share " + str;
sendIntent.putExtra(Intent.EXTRA_TEXT, sharedText);
sendIntent.setType("text/plain");
mContext.startActivity(sendIntent);
}
答案 0 :(得分:4)
确定。没有人回答,但我自己解决了这个问题。当您使用Proguard时,您的方法名称会被更改。因此,在从javascript调用它们时,由于方法名称已更改,调用方法不起作用。
所以这里发生了什么,当我在开发期间运行时,由于没有开发中的Proguard,它工作正常。但是当签名apk生成时,Proguard混淆了方法名称并停止了javascript界面的功能。
您有两种选择: 1.禁用Proguard 2.为Proguard添加例外