与此 question 类似,但解决方案在 mycase 中不起作用。

运行函数 webview.loadUrl 时,Android 应用程序崩溃
关闭时出现以下错误:



编辑:现在尝试在 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();
             }
   }

最佳答案



正如错误指出的那样..您正在非 UI 线程上调用 webview 方法(在单击监听器内)。

在 onClick 内部调用 web View 方法时,您应该使用 runOnUiThread 来使用主线程

  MainActivity.this.runOnUiThread(new Runnable(){
       @Override
        public void run() {
           String value = input.getText().toString();
           webView.loadUrl("javascript:window."+funct+"('"+value+"')");
           return;
        }
 });

10-08 14:12