diff options
| author | 2023-06-13 08:58:36 +0000 | |
|---|---|---|
| committer | 2023-06-13 08:58:36 +0000 | |
| commit | 4644f41cdb0c83fe04690f500a14d3b1db6eab6e (patch) | |
| tree | c6f6c50b2f9efd0bcd858d6082191ce395e68605 | |
| parent | c8e17b6c08f9c0923e70e1ad3ef86f8681889f40 (diff) | |
| parent | a129baf1f70f01fdcf8a125b71ecac2f71e64c26 (diff) | |
Merge "Fixes type resolving in ActivityManagerShellCommand" into udc-dev am: a129baf1f7
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23581857
Change-Id: I42707b9cc09c46ade87df0d7d73b905187694d8b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | packages/Shell/AndroidManifest.xml | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerShellCommand.java | 17 |
2 files changed, 6 insertions, 13 deletions
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index 43f98c38715d..56e0643b1e20 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -839,6 +839,8 @@ <uses-permission android:name="android.permission.LAUNCH_CREDENTIAL_SELECTOR" /> <!-- Permission required for CTS test IntentRedirectionTest --> <uses-permission android:name="android.permission.QUERY_CLONED_APPS" /> + <!-- Permission required for accessing all content provider mime types --> + <uses-permission android:name="android.permission.GET_ANY_PROVIDER_TYPE" /> <application android:label="@string/app_label" diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index fd980727e12b..ba8a1b9d4690 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -149,7 +149,6 @@ import java.util.Locale; import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; import javax.microedition.khronos.egl.EGL10; import javax.microedition.khronos.egl.EGLConfig; @@ -609,15 +608,7 @@ final class ActivityManagerShellCommand extends ShellCommand { return 1; } - AtomicReference<String> mimeType = new AtomicReference<>(intent.getType()); - - if (mimeType.get() == null && intent.getData() != null - && "content".equals(intent.getData().getScheme())) { - mInterface.getMimeTypeFilterAsync(intent.getData(), mUserId, - new RemoteCallback(result -> { - mimeType.set(result.getPairValue()); - })); - } + final String mimeType = intent.resolveType(mInternal.mContext); do { if (mStopOption) { @@ -629,7 +620,7 @@ final class ActivityManagerShellCommand extends ShellCommand { int userIdForQuery = mInternal.mUserController.handleIncomingUser( Binder.getCallingPid(), Binder.getCallingUid(), mUserId, false, ALLOW_NON_FULL, "ActivityManagerShellCommand", null); - List<ResolveInfo> activities = mPm.queryIntentActivities(intent, mimeType.get(), + List<ResolveInfo> activities = mPm.queryIntentActivities(intent, mimeType, 0, userIdForQuery).getList(); if (activities == null || activities.size() <= 0) { getErrPrintWriter().println("Error: Intent does not match any activities: " @@ -726,12 +717,12 @@ final class ActivityManagerShellCommand extends ShellCommand { } if (mWaitOption) { result = mInternal.startActivityAndWait(null, SHELL_PACKAGE_NAME, null, intent, - mimeType.get(), null, null, 0, mStartFlags, profilerInfo, + mimeType, null, null, 0, mStartFlags, profilerInfo, options != null ? options.toBundle() : null, mUserId); res = result.result; } else { res = mInternal.startActivityAsUserWithFeature(null, SHELL_PACKAGE_NAME, null, - intent, mimeType.get(), null, null, 0, mStartFlags, profilerInfo, + intent, mimeType, null, null, 0, mStartFlags, profilerInfo, options != null ? options.toBundle() : null, mUserId); } final long endTime = SystemClock.uptimeMillis(); |