2014-10-15 2 views
1

Я использую addJavascriptInterface в своем приложении для всплывающего окна совместного доступа из Javascript.Почему addJavascriptInterface не работает после публикации?

Проблема: я могу видеть всплывающее окно, когда я использую свой мобильный телефон в среде разработки. Но то же самое не работает после публикации в Google и загрузки. Я использую 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"); 

------- Внутри Мусор --------------

функция share_it (ID) {

Android.share_this(msg[id]); 

}

----- WebappInterface.java --------

@JavascriptInterface общественных пустот share_this (String ул) {

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); 



} 

ответ

3

ОК. Никто не ответил, но я решил проблему. Когда вы используете Proguard, ваши имена методов меняются. Поэтому, вызывая их из javascript, из-за изменения имени метода, метод вызова не работает.

Так что происходило здесь, когда я работал во время разработки, он отлично работал из-за отсутствия Proguard в разработке. Но когда был создан подписанный apk, Proguard был запутыванием имени метода и прекращением функционирования javascript-интерфейса.

У вас есть два варианта: 1. Отключить Proguard 2. Добавление исключений в Proguard

+1

Это был хороший ключ для меня ... Ниже строки, которые вы должны добавить к вашей Proguard-правил. pro: класс -keepclassmembers * { @ android.webkit.JavascriptInterface ; } -keepattributes JavascriptInterface Это еще один источник ... http://stackoverflow.com/questions/17629507/how-to-configure-proguard-for-javascript-interface –

Смежные вопросы