Merge "Fixes type resolving in ActivityManagerShellCommand" into udc-dev

This commit is contained in:
Ashish Kumar Gaurav
2023-06-13 08:06:05 +00:00
committed by Android (Google) Code Review
2 changed files with 6 additions and 13 deletions

View File

@@ -839,6 +839,8 @@
<uses-permission android:name="android.permission.LAUNCH_CREDENTIAL_SELECTOR" /> <uses-permission android:name="android.permission.LAUNCH_CREDENTIAL_SELECTOR" />
<!-- Permission required for CTS test IntentRedirectionTest --> <!-- Permission required for CTS test IntentRedirectionTest -->
<uses-permission android:name="android.permission.QUERY_CLONED_APPS" /> <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 <application
android:label="@string/app_label" android:label="@string/app_label"

View File

@@ -149,7 +149,6 @@ import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import javax.microedition.khronos.egl.EGL10; import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.egl.EGLConfig;
@@ -609,15 +608,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
return 1; return 1;
} }
AtomicReference<String> mimeType = new AtomicReference<>(intent.getType()); final String mimeType = intent.resolveType(mInternal.mContext);
if (mimeType.get() == null && intent.getData() != null
&& "content".equals(intent.getData().getScheme())) {
mInterface.getMimeTypeFilterAsync(intent.getData(), mUserId,
new RemoteCallback(result -> {
mimeType.set(result.getPairValue());
}));
}
do { do {
if (mStopOption) { if (mStopOption) {
@@ -629,7 +620,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
int userIdForQuery = mInternal.mUserController.handleIncomingUser( int userIdForQuery = mInternal.mUserController.handleIncomingUser(
Binder.getCallingPid(), Binder.getCallingUid(), mUserId, false, Binder.getCallingPid(), Binder.getCallingUid(), mUserId, false,
ALLOW_NON_FULL, "ActivityManagerShellCommand", null); ALLOW_NON_FULL, "ActivityManagerShellCommand", null);
List<ResolveInfo> activities = mPm.queryIntentActivities(intent, mimeType.get(), List<ResolveInfo> activities = mPm.queryIntentActivities(intent, mimeType,
0, userIdForQuery).getList(); 0, userIdForQuery).getList();
if (activities == null || activities.size() <= 0) { if (activities == null || activities.size() <= 0) {
getErrPrintWriter().println("Error: Intent does not match any activities: " getErrPrintWriter().println("Error: Intent does not match any activities: "
@@ -726,12 +717,12 @@ final class ActivityManagerShellCommand extends ShellCommand {
} }
if (mWaitOption) { if (mWaitOption) {
result = mInternal.startActivityAndWait(null, SHELL_PACKAGE_NAME, null, intent, 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); options != null ? options.toBundle() : null, mUserId);
res = result.result; res = result.result;
} else { } else {
res = mInternal.startActivityAsUserWithFeature(null, SHELL_PACKAGE_NAME, null, 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); options != null ? options.toBundle() : null, mUserId);
} }
final long endTime = SystemClock.uptimeMillis(); final long endTime = SystemClock.uptimeMillis();