为什么发布后addJavascriptInterface无法正常工作?

时间:2014-10-15 04:31:43

标签: android

我在我的应用程序中使用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);



}

1 个答案:

答案 0 :(得分:4)

确定。没有人回答,但我自己解决了这个问题。当您使用Proguard时,您的方法名称会被更改。因此,在从javascript调用它们时,由于方法名称已更改,调用方法不起作用。

所以这里发生了什么,当我在开发期间运行时,由于没有开发中的Proguard,它工作正常。但是当签名apk生成时,Proguard混淆了方法名称并停止了javascript界面​​的功能。

您有两种选择: 1.禁用Proguard 2.为Proguard添加例外