この質問に似ていますが、私のケースでは解決策が機能していません。
関数 webview.loadUrl を実行すると Android アプリがクラッシュし、
閉じるときに次のエラーが発生します。
E/AndroidRuntime(1593): 原因: java.lang.Throwable: 警告: スレッド 'WebViewCoreThread' で WebView メソッドが呼び出されました。すべての WebView メソッドは、UI スレッドで呼び出す必要があります。WebView の将来のバージョンでは、他のスレッドでの使用がサポートされなくなる可能性があります。
編集: runOnUiThread(new Runnable(){ }) で関数を実行しようとしていますが、エラーが発生し、コンテキスト内で runOnUiThread を入力する場所に問題があります。
完全なコードは次のとおりです。
public class MyJavaScriptInterface {
@JavascriptInterface
public void androidFieldPrompt(String title, String msg, final String funct) {
final EditText input = new EditText(MainActivity.this);
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle(title);
alert.setMessage(msg);
alert.setView(input);
alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString();
// ERROR IS BEING THROWN HERE
webView.loadUrl("javascript:window."+funct+"('"+value+"')");
return;
}
});
alert.show();
}
}