aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhaoming Yin <zhaomingyin@google.com>2023-06-08 13:44:01 -0700
committerZhaoming Yin <zhaomingyin@google.com>2023-06-13 15:57:23 -0700
commit87b4c478d29d72717798e6d7091e15ea88915db2 (patch)
treedb5a3512ac234ec1accc77b0135dc884a6e741ca
parentf8e153ede200336c20d519b6746ddfadc510c9e5 (diff)
downloadmobly-bundled-snippets-87b4c478d29d72717798e6d7091e15ea88915db2.tar.gz
Solve permission issues when performing btDiscoverAndGetResults
-rw-r--r--src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java32
-rw-r--r--src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java2
2 files changed, 5 insertions, 29 deletions
diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java b/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java
index 7e1a416..86a49d3 100644
--- a/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java
+++ b/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java
@@ -44,6 +44,9 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.net.wifi.SupplicantState;
+
+import com.google.android.mobly.snippet.bundled.utils.Utils;
+
/** Snippet class exposing Android APIs in WifiManager. */
public class WifiManagerSnippet implements Snippet {
private static class WifiManagerSnippetException extends Exception {
@@ -69,7 +72,7 @@ public class WifiManagerSnippet implements Snippet {
mWifiManager =
(WifiManager)
mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
- adaptShellPermissionIfRequired();
+ Utils.adaptShellPermissionIfRequired(mContext);
}
@Rpc(
@@ -403,33 +406,6 @@ public class WifiManagerSnippet implements Snippet {
@Override
public void shutdown() {}
- /**
- * Elevates permission as require for proper wifi controls.
- *
- * Starting in Android Q (29), additional restrictions are added for wifi operation. See
- * below Android Q privacy changes for additional details.
- * https://developer.android.com/preview/privacy/camera-connectivity
- *
- * @throws Throwable if failed to cleanup connection with UiAutomation
- */
- private void adaptShellPermissionIfRequired() throws Throwable {
- if (mContext.getApplicationContext().getApplicationInfo().targetSdkVersion >= 29
- && Build.VERSION.SDK_INT >= 29) {
- Log.d("Elevating permission require to enable support for wifi operation in Android Q+");
- UiAutomation uia = InstrumentationRegistry.getInstrumentation().getUiAutomation();
- uia.adoptShellPermissionIdentity();
- try {
- Class<?> cls = Class.forName("android.app.UiAutomation");
- Method destroyMethod = cls.getDeclaredMethod("destroy");
- destroyMethod.invoke(uia);
- } catch (NoSuchMethodException
- | IllegalAccessException
- | ClassNotFoundException
- | InvocationTargetException e) {
- throw new WifiManagerSnippetException("Failed to cleaup Ui Automation", e);
- }
- }
- }
private class WifiScanReceiver extends BroadcastReceiver {
diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java b/src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java
index 36c9632..bd9a76f 100644
--- a/src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java
+++ b/src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java
@@ -219,7 +219,7 @@ public final class Utils {
public static void adaptShellPermissionIfRequired(Context context) throws Throwable {
if (context.getApplicationContext().getApplicationInfo().targetSdkVersion >= 29
&& Build.VERSION.SDK_INT >= 29) {
- Log.d("Elevating permission require to enable support for wifi operation in Android Q+");
+ Log.d("Elevating permission require to enable support for privileged operation in Android Q+");
UiAutomation uia = InstrumentationRegistry.getInstrumentation().getUiAutomation();
uia.adoptShellPermissionIdentity();
try {