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)
This commit is contained in:
Hans-Christoph Steiner 2019-07-05 23:47:15 +02:00
parent bfcc5c974e
commit 1e29c281c6
No known key found for this signature in database
GPG Key ID: 3E177817BA1B9BFA

View File

@ -237,7 +237,13 @@ public class WifiStateChangeService extends IntentService {
} }
FDroidApp.bssid = wifiInfo.getBSSID(); FDroidApp.bssid = wifiInfo.getBSSID();
} else { } 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); Utils.debugLog(TAG, "WifiApControl: " + wifiApControl);
if (wifiApControl == null && FDroidApp.ipAddressString != null) { if (wifiApControl == null && FDroidApp.ipAddressString != null) {
wifiInfo = wifiManager.getConnectionInfo(); wifiInfo = wifiManager.getConnectionInfo();
@ -249,7 +255,9 @@ public class WifiStateChangeService extends IntentService {
} else if (wifiApControl != null && wifiApControl.isEnabled()) { } else if (wifiApControl != null && wifiApControl.isEnabled()) {
WifiConfiguration wifiConfiguration = wifiApControl.getConfiguration(); WifiConfiguration wifiConfiguration = wifiApControl.getConfiguration();
Utils.debugLog(TAG, "WifiConfiguration: " + wifiConfiguration); 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); FDroidApp.ssid = getString(R.string.swap_hidden_wifi_ssid);
} else { } else {
FDroidApp.ssid = wifiConfiguration.SSID; FDroidApp.ssid = wifiConfiguration.SSID;