Backport missing permission check for querying main activity intent
- This was fixed in T in ag/16820166, but the original code was
submitted in S. This ensures that the caller of this method
is either holding the ACCESS_SHORTCUTS permission or is the
default launcher.
Bug: 229256049
Test: atest WMShellUnitTests
Change-Id: Ib233ad754a6c6e3c4e0d0e10ed788ab8e055cccc
Merged-In: Ib233ad754a6c6e3c4e0d0e10ed788ab8e055cccc
(cherry picked from commit f4ed441e18)
This commit is contained in:
@@ -56,8 +56,8 @@ interface ILauncherApps {
|
||||
void startActivityAsUser(in IApplicationThread caller, String callingPackage,
|
||||
String callingFeatureId, in ComponentName component, in Rect sourceBounds,
|
||||
in Bundle opts, in UserHandle user);
|
||||
PendingIntent getActivityLaunchIntent(in ComponentName component, in Bundle opts,
|
||||
in UserHandle user);
|
||||
PendingIntent getActivityLaunchIntent(String callingPackage, in ComponentName component,
|
||||
in Bundle opts, in UserHandle user);
|
||||
void showAppDetailsAsUser(in IApplicationThread caller, String callingPackage,
|
||||
String callingFeatureId, in ComponentName component, in Rect sourceBounds,
|
||||
in Bundle opts, in UserHandle user);
|
||||
|
||||
@@ -752,7 +752,8 @@ public class LauncherApps {
|
||||
}
|
||||
try {
|
||||
// due to b/209607104, startActivityOptions will be ignored
|
||||
return mService.getActivityLaunchIntent(component, null /* opts */, user);
|
||||
return mService.getActivityLaunchIntent(mContext.getPackageName(), component,
|
||||
null /* opts */, user);
|
||||
} catch (RemoteException re) {
|
||||
throw re.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
@@ -1098,8 +1098,9 @@ public class LauncherAppsService extends SystemService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PendingIntent getActivityLaunchIntent(ComponentName component, Bundle opts,
|
||||
UserHandle user) {
|
||||
public PendingIntent getActivityLaunchIntent(String callingPackage, ComponentName component,
|
||||
Bundle opts, UserHandle user) {
|
||||
ensureShortcutPermission(callingPackage);
|
||||
if (!canAccessProfile(user.getIdentifier(), "Cannot start activity")) {
|
||||
throw new ActivityNotFoundException("Activity could not be found");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user