mgks / Android-SmartWebView

A simple use webview integrated w/ native features to help create most advanced hybrid applications.
https://mgks.dev/smart-webview
MIT License
551 stars 276 forks source link

Exit app confirmation not working #302

Open frogsuite opened 5 months ago

frogsuite commented 5 months ago

Describe the bug exit app after back not showing dialog box.

Additional context Logs

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:842) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94) at android.app.Dialog.show(Dialog.java:329) at mgks.os.swv.Functions.ask_exit(Functions.java:578) at mgks.os.swv.MainActivity.onKeyDown(MainActivity.java:576) at android.view.KeyEvent.dispatch(KeyEvent.java:2720) at android.app.Activity.dispatchKeyEvent(Activity.java:3430) at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:126) at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:86) at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:144) at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:604) at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:60) at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:3413) at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:346) at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5215) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5083) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4602) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4655) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4621) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4761) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4629) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4818) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4602) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4655) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4621) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4629) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4602) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4655) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4621) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4794) at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4957) at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2580) at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2090) at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2081) at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2557) at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:326) at android.os.Looper.loop(Looper.java:165) at android.app.ActivityThread.main(ActivityThread.java:6810) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

kia1349 commented 4 months ago

i have same problem

kia1349 commented 4 months ago

Describe the bug exit app after back not showing dialog box.

Additional context Logs

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:842) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94) at android.app.Dialog.show(Dialog.java:329) at mgks.os.swv.Functions.ask_exit(Functions.java:578) at mgks.os.swv.MainActivity.onKeyDown(MainActivity.java:576) at android.view.KeyEvent.dispatch(KeyEvent.java:2720) at android.app.Activity.dispatchKeyEvent(Activity.java:3430) at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:126) at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:86) at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:144) at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:604) at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:60) at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:3413) at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:346) at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5215) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5083) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4602) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4655) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4621) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4761) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4629) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4818) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4602) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4655) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4621) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4629) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4602) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4655) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4621) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4794) at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4957) at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2580) at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2090) at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2081) at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2557) at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:326) at android.os.Looper.loop(Looper.java:165) at android.app.ActivityThread.main(ActivityThread.java:6810) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

i have same problem and resolve it by this change:

in MainActivity.java => line 563 change fns.ask_exit(getApplicationContext()); with fns.ask_exit(MainActivity.this);

frogsuite commented 4 months ago

Yes this worked .