[DO NOT MERGE] Fix NPE caused by an install flow where we decode the LauncherActivityInfo but we don't fill in the data Intent.

am: 4783545808

Change-Id: I551fb58ffec1b5532806179d510a1c8a6c5f091f
This commit is contained in:
Jon Miranda
2019-11-08 19:06:01 -08:00
committed by android-build-merger
@@ -39,6 +39,9 @@ import android.util.Base64;
import android.util.Log;
import android.util.Pair;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
import com.android.launcher3.compat.LauncherAppsCompat;
import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.icons.BitmapInfo;
@@ -250,11 +253,6 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
return info == null ? null : (WorkspaceItemInfo) info.getItemInfo().first;
}
public static WorkspaceItemInfo fromActivityInfo(LauncherActivityInfo info, Context context) {
return (WorkspaceItemInfo)
new PendingInstallShortcutInfo(info, context).getItemInfo().first;
}
public static void queueShortcut(ShortcutInfo info, Context context) {
queuePendingShortcutInfo(new PendingInstallShortcutInfo(info, context), context);
}
@@ -330,10 +328,10 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
private static class PendingInstallShortcutInfo {
final boolean isActivity;
final ShortcutInfo shortcutInfo;
final AppWidgetProviderInfo providerInfo;
@Nullable final ShortcutInfo shortcutInfo;
@Nullable final AppWidgetProviderInfo providerInfo;
final Intent data;
@Nullable final Intent data;
final Context mContext;
final Intent launchIntent;
final String label;
@@ -363,7 +361,12 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
shortcutInfo = null;
providerInfo = null;
data = null;
String packageName = info.getComponentName().getPackageName();
data = new Intent();
data.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent().setComponent(
new ComponentName(packageName, "")).setPackage(packageName));
data.putExtra(Intent.EXTRA_SHORTCUT_NAME, info.getLabel());
user = info.getUser();
mContext = context;
@@ -457,9 +460,10 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
// This name is only used for comparisons and notifications, so fall back to activity
// name if not supplied
String name = ensureValidName(mContext, launchIntent, label).toString();
Bitmap icon = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON);
Intent.ShortcutIconResource iconResource =
data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE);
Bitmap icon = data == null ? null
: data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON);
Intent.ShortcutIconResource iconResource = data == null ? null
: data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE);
// Only encode the parameters which are supported by the API.
JSONStringer json = new JSONStringer()
@@ -469,9 +473,11 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
.key(APP_SHORTCUT_TYPE_KEY).value(isActivity);
if (icon != null) {
byte[] iconByteArray = GraphicsUtils.flattenBitmap(icon);
json = json.key(ICON_KEY).value(
Base64.encodeToString(
iconByteArray, 0, iconByteArray.length, Base64.DEFAULT));
if (iconByteArray != null) {
json = json.key(ICON_KEY).value(
Base64.encodeToString(
iconByteArray, 0, iconByteArray.length, Base64.DEFAULT));
}
}
if (iconResource != null) {
json = json.key(ICON_RESOURCE_NAME_KEY).value(iconResource.resourceName);