From 52d90989e6f3ef73b474e087eb4ff30c0f90ccd9 Mon Sep 17 00:00:00 2001 From: Andrew Havens Date: Thu, 12 Sep 2019 14:06:32 -0700 Subject: [PATCH 1/2] Improve comments and if statement logic to make it more clear that we no longer need to request permission to write to settings. --- .../java/com/devstepbcn/wifi/AndroidWifiModule.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/com/devstepbcn/wifi/AndroidWifiModule.java b/android/src/main/java/com/devstepbcn/wifi/AndroidWifiModule.java index e5518ee..b7d6d6f 100644 --- a/android/src/main/java/com/devstepbcn/wifi/AndroidWifiModule.java +++ b/android/src/main/java/com/devstepbcn/wifi/AndroidWifiModule.java @@ -105,21 +105,16 @@ public void forceWifiUsage(boolean useWifi) { if (useWifi) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - canWriteFlag = true; - // Only need ACTION_MANAGE_WRITE_SETTINGS on 6.0.0, regular permissions suffice on later versions - } else if (Build.VERSION.RELEASE.toString().equals("6.0.1")) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N || Build.VERSION.RELEASE.toString().equals("6.0.1")) { + // In versions >= 6.0.1, we no longer need to request permission to write to settings. canWriteFlag = true; - // Don't need ACTION_MANAGE_WRITE_SETTINGS on 6.0.1, if we can positively identify it treat like 7+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - // On M 6.0.0 (N+ or higher and 6.0.1 hit above), we need ACTION_MANAGE_WRITE_SETTINGS to forceWifi. + // In version 6.0.0, we need to request permission to write to settings in order to forceWifi. canWriteFlag = Settings.System.canWrite(reactContext); if (!canWriteFlag) { Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + reactContext.getPackageName())); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - reactContext.startActivity(intent); } } From bc68db96e4afacf7fd2c69ed0a1e7cdbef6c2d10 Mon Sep 17 00:00:00 2001 From: Andrew Havens Date: Thu, 12 Sep 2019 14:06:32 -0700 Subject: [PATCH 2/2] Fix bug in placement of code within try/catch block. --- .../com/devstepbcn/wifi/AndroidWifiModule.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/android/src/main/java/com/devstepbcn/wifi/AndroidWifiModule.java b/android/src/main/java/com/devstepbcn/wifi/AndroidWifiModule.java index b7d6d6f..c7690d9 100644 --- a/android/src/main/java/com/devstepbcn/wifi/AndroidWifiModule.java +++ b/android/src/main/java/com/devstepbcn/wifi/AndroidWifiModule.java @@ -131,17 +131,19 @@ public void forceWifiUsage(boolean useWifi) { manager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - manager.bindProcessToNetwork(network); - } else { - //This method was deprecated in API level 23 - ConnectivityManager.setProcessDefaultNetwork(network); - } try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + manager.bindProcessToNetwork(network); + } else { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + //This method was deprecated in API level 23 + ConnectivityManager.setProcessDefaultNetwork(network); + } + } + manager.unregisterNetworkCallback(this); } catch (Exception e) { e.printStackTrace(); } - manager.unregisterNetworkCallback(this); } }); }