Я отображаю веб-страницу в моем приложении Android, используя WebView
, эта веб-страница вызывает событие сообщения окна и предоставляет некоторые данные через это событие. Я не могу редактировать код сайта. Но мне нужно получить доступ к данным из события сообщения.
Для этого я добавляю прослушиватель события JavaScript с помощью метода evaluateJavascript()
и пытаюсь вызвать функцию Java из JavaScript используя addJavascriptInterface()
.
Мой код пока:
public class MyActivity extends AppCompatActivity {
@Override
@SuppressLint("SetJavaScriptEnabled")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.addJavascriptInterface(new JsObject(this), "Android");
webView.evaluateJavascript("window.addEventListener('message', (e) => {Android.logData('Test String')})", null);
webView.loadUrl("https://example.com/mypage");
setContentView(webView);
}
private class JsObject {
Context context;
JsObject(Context context) {
this.context = context;
}
@JavascriptInterface
public void logData(String s) {
Log.v("EEE", s);
}
}
}
Но обработчик события не вызывается. Я не уверен, что это правильный подход. Пожалуйста помоги. ТИА.