From 87b4c478d29d72717798e6d7091e15ea88915db2 Mon Sep 17 00:00:00 2001 From: Zhaoming Yin Date: Thu, 8 Jun 2023 13:44:01 -0700 Subject: Solve permission issues when performing btDiscoverAndGetResults --- .../mobly/snippet/bundled/WifiManagerSnippet.java | 32 +++------------------- .../android/mobly/snippet/bundled/utils/Utils.java | 2 +- 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 { -- cgit v1.2.3