Вы можете сделать это, используя метод WebView )" rel="nofollow noreferrer">evaluateJavascript()
.
Прежде всего вам необходимо создать событие в JavaScript веб-страницы и добавить обработчик события:
window.appResumeEvent = new Event('appresume');
window.addEventListener('appresume', yourFunction, false);
function yourFunction() {…}
Важно, чтобы вы установили событие возобновления приложения в глобальной области видимости (этого можно достичь, установив его как свойство window
).
Теперь в вашем Android onResume()
method, запустите evaluateJavascript()
method:
@Override
protected void onResume() {
super.onResume();
mainWebView.evaluateJavascript("(function() { window.dispatchEvent(appResumeEvent); })();", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
}
});
}
Обратите внимание, что javascript должен быть заключен в немедленно вызванное выражение функции.Также обратите внимание, что dispatchEvent()
принимает переменную события в качестве аргумента, а не строку имени события.
Дополнительная информация: Создание и отправка событий в javascript (MDN)
Длямой полный MainActivity.java
фрагмент изображения клика:
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView mainWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainWebView = findViewById(R.id.activity_main_webview);
mainWebView.setWebViewClient(new WebViewClient());
WebSettings webSettings = mainWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mainWebView.loadUrl("file:///android_asset/www/index.html");
}
@Override
protected void onResume() {
super.onResume();
mainWebView.evaluateJavascript("(function() { window.dispatchEvent(appResumeEvent); })();", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
}
});
}
}