Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android webview中使用JS引导的对话框_Android_Mobile - Fatal编程技术网

在android webview中使用JS引导的对话框

在android webview中使用JS引导的对话框,android,mobile,Android,Mobile,我试图让我的webview显示一个javascript“确认”框,我从logcat获得以下异常: E/AndroidRuntime( 387): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@40 5113d8 is not valid; is your activity running? E/AndroidRuntime(

我试图让我的webview显示一个javascript“确认”框,我从logcat获得以下异常:

E/AndroidRuntime(  387): android.view.WindowManager$BadTokenException: Unable to add         window -- token android.os.BinderProxy@40
5113d8 is not valid; is your activity running?
E/AndroidRuntime(  387):        at android.view.ViewRoot.setView(ViewRoot.java:527)
E/AndroidRuntime(  387):        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
E/AndroidRuntime(  387):        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
E/AndroidRuntime(  387):        at android.view.Window$LocalWindowManager.addView(Window.java:424)
E/AndroidRuntime(  387):        at android.app.Dialog.show(Dialog.java:241)
E/AndroidRuntime(  387):        at com.playfish.our.app.activity.App$1.onJsConfirm(App.java:55)
E/AndroidRuntime(  387):        at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:526)
E/AndroidRuntime(  387):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  387):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  387):        at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime(  387):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  387):        at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(  387):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(  387):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(  387):        at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(   60):   Force finishing activity com.playfish.our.app/.activity.App
W/ActivityManager(   60): Activity pause timeout for HistoryRecord{4071cfc0 com.playfish.our.app/.activity.App}
我的对话框的代码是:

    webview.setWebChromeClient(new WebChromeClient() {
          public boolean onConsoleMessage(ConsoleMessage cm) {
            Log.d(getClass().getName(), cm.message() + " -- From line "
                    + cm.lineNumber() + " of "
                    + cm.sourceId());
            return true;
        }

          @Override
          public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,    WebStorage.QuotaUpdater quotaUpdater)
          {
                quotaUpdater.updateQuota(spaceNeeded * 2);
          }

         @Override
         public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {

             new AlertDialog.Builder(App.this)
            .setTitle("Update")
            .setMessage(message)
            .setPositiveButton(android.R.string.yes,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            result.confirm();
                        }
                    })
            .setNegativeButton(android.R.string.no,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            result.cancel();
                        }
                    })
            .create()
            .show();

            return true;
        }
     });
代码目前组织得不是很好,也不是很好,所以请不要再纠缠于此;我将在它工作后进行重构:

我认为这与传递给对话框的上下文错误有关,我在网上找到了几个类似问题的答案,但没有一个对我有效。我在上下文中使用了其他值,但它们都不起作用,例如getApplicationContext、webview.getContext等……如果您有任何帮助,我们将不胜感激


顺便说一句,我很有可能正在做一些非常愚蠢的事情,因为我是一名JS开发人员,对java几乎没有经验。

Hi。你找到这个问题的答案了吗?对不起,安德鲁,没有。我现在在另一个项目上,所以我怀疑我是否会寻求答案。祝你好运找到一个!可以不过,非常感谢您的回复,非常感谢您抽出时间