Android 为什么addJavascriptInterface在发布后不工作?
我在应用程序中使用addJavascriptInterface从Javascript弹出一个共享窗口 问题是:当我在开发环境中使用手机时,我可以看到弹出窗口。但在发布到谷歌并下载后不工作也是如此。我正在使用Android 4.2 Jellybean mobile进行测试 我试过几种方法,但都不管用 -----一次创建----- wvMainMenu=WebView findViewByIdR.id.wvMainMenuAndroid 为什么addJavascriptInterface在发布后不工作?,android,Android,我在应用程序中使用addJavascriptInterface从Javascript弹出一个共享窗口 问题是:当我在开发环境中使用手机时,我可以看到弹出窗口。但在发布到谷歌并下载后不工作也是如此。我正在使用Android 4.2 Jellybean mobile进行测试 我试过几种方法,但都不管用 -----一次创建----- wvMainMenu=WebView findViewByIdR.id.wvMainMenu wvMainMenu.getSettings().setJavaSc
wvMainMenu.getSettings().setJavaScriptEnabled(true);
wvMainMenu.getSettings().setLightTouchEnabled(true);
wvMainMenu.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wvMainMenu.addJavascriptInterface(new WebappInterface(this), "Android");
----内部Javascript-------
函数共享\u itid{
Android.share_this(msg[id]);
}
---WebappInterface.java----
@JavascriptInterface
公共无效共享\u thistring str
{
好的。没有人回答,但我自己解决了这个问题。当您使用Proguard时,您的方法名称会发生更改。因此,当从javascript调用它们时,由于方法名称发生了更改,调用方法不起作用 所以这里发生的事情是,当我在开发过程中运行时,由于开发中没有Proguard,它工作正常。但是,当生成签名的apk时,Proguard混淆了方法名称,并停止了javascript接口的运行 您有两个选择: 1.禁用Proguard
2.将异常添加到Proguard好的。没有人回答,但我自己解决了问题。当您使用Proguard时,您的方法名称会发生更改。因此,当从javascript调用它们时,由于方法名称已更改,调用方法不起作用 所以这里发生的事情是,当我在开发过程中运行时,由于开发中没有Proguard,它工作正常。但是,当生成签名的apk时,Proguard混淆了方法名称,并停止了javascript接口的运行 您有两个选择: 1.禁用Proguard
2.为Proguard添加异常这对我来说是一个很好的线索…以下是您必须添加到Proguard-rules.pro的行:-keepclassmembers类*{@android.webkit.JavascriptInterface;}-keepattributes JavascriptInterface这是另一个源代码…只需添加@Keep annotation。这对我来说是一个很好的线索…以下是您必须添加到proguard-rules.pro中的行:-keepclassmembers类*{@android.webkit.JavascriptInterface;}-keepattributes JavascriptInterface这是另一个源代码…只需添加@Keep注释。
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);
}