From 62c964e8bd493ab14a93bc93f3a6f0470104c8ed Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Sun, 12 Jan 2025 09:59:23 +0100 Subject: [PATCH] implement PackageManager.getLaunchIntentForPackage() fixes a crash after importing a NewPipe backup --- src/api-impl/android/content/Intent.java | 5 +++++ src/api-impl/android/content/pm/PackageManager.java | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/api-impl/android/content/Intent.java b/src/api-impl/android/content/Intent.java index 6705ab9f..12c0d00b 100644 --- a/src/api-impl/android/content/Intent.java +++ b/src/api-impl/android/content/Intent.java @@ -368,4 +368,9 @@ public class Intent implements Parcelable { public void removeExtra(String name) { extras.remove(name); } + + public Intent putParcelableArrayListExtra(String name, ArrayList value) { + extras.putParcelableArrayList(name, value); + return this; + } } diff --git a/src/api-impl/android/content/pm/PackageManager.java b/src/api-impl/android/content/pm/PackageManager.java index e5408412..f335c7bb 100644 --- a/src/api-impl/android/content/pm/PackageManager.java +++ b/src/api-impl/android/content/pm/PackageManager.java @@ -1427,6 +1427,16 @@ public class PackageManager { * not contain such an activity. */ public Intent getLaunchIntentForPackage(String packageName) { + if (!Context.this_application.getPackageName().equals(packageName)) + return null; + for (PackageParser.Activity activity: Context.pkg.activities) { + for (PackageParser.IntentInfo intent: activity.intents) { + Slog.i(TAG, intent.toString()); + if (intent.hasCategory("android.intent.category.LAUNCHER")) { + return new Intent("android.intent.action.MAIN", null).setComponent(new ComponentName(packageName, activity.className)); + } + } + } return null; }