Merge "Removing config shortcut activities for managed profiles for apps build with older sdk" into ub-launcher3-dorval

This commit is contained in:
TreeHugger Robot 2017-03-20 22:20:06 +00:00 committed by Android (Google) Code Review
commit aeb60bffc9
4 changed files with 22 additions and 3 deletions

View File

@ -1451,9 +1451,14 @@ public class Launcher extends BaseActivity
}
if (info == null) {
info = InstallShortcutReceiver.fromShortcutIntent(this, data);
// Legacy shortcuts are only supported for primary profile.
info = Process.myUserHandle().equals(args.user)
? InstallShortcutReceiver.fromShortcutIntent(this, data) : null;
if (info == null || !new PackageManagerHelper(this).hasPermissionForActivity(
if (info == null) {
Log.e(TAG, "Unable to parse a valid custom shortcut result");
return;
} else if (!new PackageManagerHelper(this).hasPermissionForActivity(
info.intent, args.getPendingIntent().getComponent().getPackageName())) {
// The app is trying to add a shortcut without sufficient permissions
Log.e(TAG, "Ignoring malicious intent " + info.intent.toUri(0));

View File

@ -20,6 +20,8 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.LauncherActivityInfo;
import android.content.pm.LauncherApps;
import android.os.Build;
import android.os.Process;
import android.os.UserHandle;
import android.util.Log;
@ -44,15 +46,20 @@ public class LauncherAppsCompatVO extends LauncherAppsCompatVL {
@Override
public List<ShortcutConfigActivityInfo> getCustomShortcutActivityList() {
List<ShortcutConfigActivityInfo> result = new ArrayList<>();
UserHandle myUser = Process.myUserHandle();
try {
Method m = LauncherApps.class.getDeclaredMethod("getShortcutConfigActivityList",
String.class, UserHandle.class);
for (UserHandle user : UserManagerCompat.getInstance(mContext).getUserProfiles()) {
boolean ignoreTargetSdk = myUser.equals(user);
List<LauncherActivityInfo> activities =
(List<LauncherActivityInfo>) m.invoke(mLauncherApps, null, user);
for (LauncherActivityInfo activityInfo : activities) {
result.add(new ShortcutConfigActivityInfoVO(activityInfo));
if (ignoreTargetSdk || activityInfo.getApplicationInfo().targetSdkVersion >=
Build.VERSION_CODES.O) {
result.add(new ShortcutConfigActivityInfoVO(activityInfo));
}
}
}
} catch (Exception e) {

View File

@ -24,6 +24,8 @@ import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import com.android.launcher3.Utilities;
/**
* A wrapper around platform implementation of PinItemRequestCompat until the
* updated SDK is available.
@ -115,6 +117,9 @@ public class PinItemRequestCompat implements Parcelable {
};
public static PinItemRequestCompat getPinItemRequest(Intent intent) {
if (!Utilities.isAtLeastO()) {
return null;
}
Parcelable extra = intent.getParcelableExtra(EXTRA_PIN_ITEM_REQUEST);
return extra == null ? null : new PinItemRequestCompat(extra);
}

View File

@ -53,6 +53,7 @@ public class PendingRequestArgs extends ItemInfo implements Parcelable {
public PendingRequestArgs(Parcel parcel) {
readFromValues(ContentValues.CREATOR.createFromParcel(parcel));
user = parcel.readParcelable(null);
mArg1 = parcel.readInt();
mObjectType = parcel.readInt();
@ -69,6 +70,7 @@ public class PendingRequestArgs extends ItemInfo implements Parcelable {
ContentValues itemValues = new ContentValues();
writeToValues(new ContentWriter(itemValues, null));
itemValues.writeToParcel(dest, flags);
dest.writeParcelable(user, flags);
dest.writeInt(mArg1);
dest.writeInt(mObjectType);