From e5334fd7973c87f7db5945fe4d5f27d478d54ea5 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 10 Sep 2021 17:26:59 +0200 Subject: [PATCH] ignore crashes with WifiApControl in SwapService.onDestroy() Instead of trying to figure out the state and what to do to properly shut things down, this just executes the methods and catches any exception. STACK_TRACE=java.lang.RuntimeException: Unable to stop service org.fdroid.fdroid.nearby.SwapService@2ff80b9: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference at android.app.ActivityThread.handleStopService(ActivityThread.java:4136) at android.app.ActivityThread.access$1900(ActivityThread.java:219) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1896) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference at cc.mvdan.accesspoint.WifiApControl.invokeQuietly(WifiApControl.java:178) at cc.mvdan.accesspoint.WifiApControl.setWifiApEnabled(WifiApControl.java:250) at cc.mvdan.accesspoint.WifiApControl.setEnabled(WifiApControl.java:259) at cc.mvdan.accesspoint.WifiApControl.disable(WifiApControl.java:269) at org.fdroid.fdroid.nearby.SwapService.onDestroy(SwapService.java:454) at android.app.ActivityThread.handleStopService(ActivityThread.java:4116) ... 8 more java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference at cc.mvdan.accesspoint.WifiApControl.invokeQuietly(WifiApControl.java:178) at cc.mvdan.accesspoint.WifiApControl.setWifiApEnabled(WifiApControl.java:250) at cc.mvdan.accesspoint.WifiApControl.setEnabled(WifiApControl.java:259) at cc.mvdan.accesspoint.WifiApControl.disable(WifiApControl.java:269) at org.fdroid.fdroid.nearby.SwapService.onDestroy(SwapService.java:454) at android.app.ActivityThread.handleStopService(ActivityThread.java:4116) at android.app.ActivityThread.access$1900(ActivityThread.java:219) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1896) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940) --- .../java/org/fdroid/fdroid/nearby/SwapService.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/full/java/org/fdroid/fdroid/nearby/SwapService.java b/app/src/full/java/org/fdroid/fdroid/nearby/SwapService.java index 329f25e7e..d73058856 100644 --- a/app/src/full/java/org/fdroid/fdroid/nearby/SwapService.java +++ b/app/src/full/java/org/fdroid/fdroid/nearby/SwapService.java @@ -449,10 +449,14 @@ public class SwapService extends Service { WifiApControl ap = WifiApControl.getInstance(this); if (ap != null) { - if (wasHotspotEnabledBeforeSwap()) { - ap.enable(); - } else { - ap.disable(); + try { + if (wasHotspotEnabledBeforeSwap()) { + ap.enable(); + } else { + ap.disable(); + } + } catch (Exception e) { + e.printStackTrace(); } }