From 1e29c281c6fbb8bed67f8e3bf4acc1c733e7cb6c Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 5 Jul 2019 23:47:15 +0200 Subject: [PATCH] catch random NullPointerExceptions related to WifiApControl java.lang.NullPointerException: Attempt to read from field 'boolean android.net.wifi.WifiConfiguration.hiddenSSID' on a null object reference at org.fdroid.fdroid.nearby.WifiStateChangeService.setSsid(WifiStateChangeService.java:252) at org.fdroid.fdroid.nearby.WifiStateChangeService.access$100(WifiStateChangeService.java:59) at org.fdroid.fdroid.nearby.WifiStateChangeService$WifiInfoThread.run(WifiStateChangeService.java:174) java.lang.NullPointerException: null receiver at java.lang.reflect.Method.invoke(Native Method) at cc.mvdan.accesspoint.WifiApControl.invokeQuietly(WifiApControl.java:178) at cc.mvdan.accesspoint.WifiApControl.isWifiApEnabled(WifiApControl.java:189) at cc.mvdan.accesspoint.WifiApControl.isEnabled(WifiApControl.java:198) at org.fdroid.fdroid.nearby.WifiStateChangeService.setSsid(WifiStateChangeService.java:249) at org.fdroid.fdroid.nearby.WifiStateChangeService.access$100(WifiStateChangeService.java:59) at org.fdroid.fdroid.nearby.WifiStateChangeService$WifiInfoThread.run(WifiStateChangeService.java:133) java.lang.NullPointerException: Attempt to invoke virtual method 'int android.app.AppOpsManager.checkOpNoThrow(int, int, java.lang.String)' on a null object reference at android.provider.Settings.isCallingPackageAllowedToPerformAppOpsProtectedOperation(Settings.java:13730) at android.provider.Settings.isCallingPackageAllowedToWriteSettings(Settings.java:13634) at android.provider.Settings$System.canWrite(Settings.java:4793) at cc.mvdan.accesspoint.WifiApControl.getInstance(WifiApControl.java:122) at org.fdroid.fdroid.nearby.WifiStateChangeService.setSsid(WifiStateChangeService.java:240) at org.fdroid.fdroid.nearby.WifiStateChangeService.access$100(WifiStateChangeService.java:59) at org.fdroid.fdroid.nearby.WifiStateChangeService$WifiInfoThread.run(WifiStateChangeService.java:133) --- .../fdroid/fdroid/nearby/WifiStateChangeService.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/full/java/org/fdroid/fdroid/nearby/WifiStateChangeService.java b/app/src/full/java/org/fdroid/fdroid/nearby/WifiStateChangeService.java index 4d2636b99..cf255d93a 100644 --- a/app/src/full/java/org/fdroid/fdroid/nearby/WifiStateChangeService.java +++ b/app/src/full/java/org/fdroid/fdroid/nearby/WifiStateChangeService.java @@ -237,7 +237,13 @@ public class WifiStateChangeService extends IntentService { } FDroidApp.bssid = wifiInfo.getBSSID(); } else { - WifiApControl wifiApControl = WifiApControl.getInstance(this); + WifiApControl wifiApControl = null; + try { + wifiApControl = WifiApControl.getInstance(this); + wifiApControl.isEnabled(); + } catch (NullPointerException e) { + wifiApControl = null; + } Utils.debugLog(TAG, "WifiApControl: " + wifiApControl); if (wifiApControl == null && FDroidApp.ipAddressString != null) { wifiInfo = wifiManager.getConnectionInfo(); @@ -249,7 +255,9 @@ public class WifiStateChangeService extends IntentService { } else if (wifiApControl != null && wifiApControl.isEnabled()) { WifiConfiguration wifiConfiguration = wifiApControl.getConfiguration(); Utils.debugLog(TAG, "WifiConfiguration: " + wifiConfiguration); - if (wifiConfiguration.hiddenSSID) { + if (wifiConfiguration == null) { + FDroidApp.ssid = getString(R.string.swap_active_hotspot, ""); + } else if (wifiConfiguration.hiddenSSID) { FDroidApp.ssid = getString(R.string.swap_hidden_wifi_ssid); } else { FDroidApp.ssid = wifiConfiguration.SSID;