mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 00:06:47 +00:00
Merge "Fix NPE caused by an install flow where we decode the LauncherActivityInfo but we don't fill in the data Intent." into ub-launcher3-qt-future-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
dafd8d9225
@@ -21,6 +21,7 @@ import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.appwidget.AppWidgetProviderInfo;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
@@ -38,6 +39,7 @@ 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;
|
||||
@@ -239,11 +241,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);
|
||||
}
|
||||
@@ -319,10 +316,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;
|
||||
@@ -352,7 +349,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;
|
||||
|
||||
@@ -446,9 +448,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()
|
||||
@@ -460,9 +463,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);
|
||||
|
||||
Reference in New Issue
Block a user