Local get launch intent

This commit is contained in:
vvb2060 2022-12-04 23:20:28 +08:00 committed by 南宫雪珊
parent ff35b9dc11
commit 26dd523fa0
4 changed files with 39 additions and 21 deletions

View File

@ -134,15 +134,6 @@ public class ConfigManager {
return list;
}
public static Intent getLaunchIntentForManager() {
try {
return LSPManagerServiceHolder.getService().getLaunchIntentForManager();
} catch (RemoteException e) {
Log.e(App.TAG, Log.getStackTraceString(e));
return null;
}
}
public static boolean enableStatusNotification() {
try {
return LSPManagerServiceHolder.getService().enableStatusNotification();

View File

@ -1,6 +1,9 @@
package org.lsposed.manager.util;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.Bitmap;
@ -12,7 +15,6 @@ import android.graphics.drawable.Icon;
import android.graphics.drawable.LayerDrawable;
import org.lsposed.manager.App;
import org.lsposed.manager.ConfigManager;
import org.lsposed.manager.R;
public class ShortcutUtil {
@ -38,12 +40,44 @@ public class ShortcutUtil {
}
}
private static Intent getLaunchIntent(Context context) {
var pm = context.getPackageManager();
var pkg = context.getPackageName();
var intent = pm.getLaunchIntentForPackage(pkg);
if (intent == null) {
try {
var pkgInfo = pm.getPackageInfo(pkg, PackageManager.GET_ACTIVITIES);
if (pkgInfo.activities != null) {
for (var activityInfo : pkgInfo.activities) {
if (activityInfo.processName.equals(activityInfo.packageName)) {
intent = new Intent(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName(pkg, activityInfo.name));
break;
}
}
}
} catch (PackageManager.NameNotFoundException ignored) {
}
}
if (intent != null) {
var categories = intent.getCategories();
if (categories != null) {
categories.clear();
}
intent.addCategory("org.lsposed.manager.LAUNCH_MANAGER");
intent.setPackage(pkg);
}
return intent;
}
public static void requestPinLaunchShortcut() {
var context= App.getInstance();
var intent = ConfigManager.getLaunchIntentForManager();
if (!App.isParasitic()) throw new RuntimeException();
var context = App.getInstance();
var info = new ShortcutInfo.Builder(context, SHORTCUT_ID)
.setShortLabel(context.getString(R.string.app_name))
.setIntent(intent)
.setIntent(getLaunchIntent(context))
.setActivity(new ComponentName(context.getPackageName(), "android.__dummy__"))
.setIcon(Icon.createWithAdaptiveBitmap(getBitmap(context, R.drawable.ic_launcher)))
.build();
var sm = context.getSystemService(ShortcutManager.class);
@ -51,7 +85,7 @@ public class ShortcutUtil {
}
public static boolean isLaunchShortcutPinned() {
var context= App.getInstance();
var context = App.getInstance();
var sm = context.getSystemService(ShortcutManager.class);
boolean pinned = false;
for (var info : sm.getPinnedShortcuts()) {

View File

@ -599,11 +599,6 @@ public class LSPManagerService extends ILSPManagerService.Stub {
PackageService.clearApplicationProfileData(packageName);
}
@Override
public Intent getLaunchIntentForManager() {
return getManagerIntent();
}
@Override
public boolean enableStatusNotification() {
return ConfigManager.getInstance().enableStatusNotification();

View File

@ -84,8 +84,6 @@ interface ILSPManagerService {
void clearApplicationProfileData(in String packageName) = 45;
Intent getLaunchIntentForManager() = 46;
boolean enableStatusNotification() = 47;
void setEnableStatusNotification(boolean enable) = 48;