summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ashish Kumar Gaurav <akgaurav@google.com> 2023-06-13 08:58:36 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-06-13 08:58:36 +0000
commit4644f41cdb0c83fe04690f500a14d3b1db6eab6e (patch)
treec6f6c50b2f9efd0bcd858d6082191ce395e68605
parentc8e17b6c08f9c0923e70e1ad3ef86f8681889f40 (diff)
parenta129baf1f70f01fdcf8a125b71ecac2f71e64c26 (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.xml2
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerShellCommand.java17
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();