public Intent getLaunchIntent(String packageName, int userId) { VPackageManager pm = VPackageManager.get(); Intent intentToResolve = new Intent(Intent.ACTION_MAIN); intentToResolve.addCategory(Intent.CATEGORY_INFO); intentToResolve.setPackage(packageName); List<ResolveInfo> ris = pm.queryIntentActivities(intentToResolve, intentToResolve.resolveType(context), 0, userId); // Otherwise, try to find a main launcher activity. if (ris == null || ris.size() <= 0) { // reuse the intent instance intentToResolve.removeCategory(Intent.CATEGORY_INFO); intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER); intentToResolve.setPackage(packageName); ris = pm.queryIntentActivities(intentToResolve, intentToResolve.resolveType(context), 0, userId); } if (ris == null || ris.size() <= 0) { return null; } Intent intent = new Intent(intentToResolve); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setClassName(ris.get(0).activityInfo.packageName, ris.get(0).activityInfo.name); return intent; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentActivities((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); if (_hostResult != null) { List<ResolveInfo> hostResult = slice ? ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { Iterator<ResolveInfo> iterator = hostResult.iterator(); while (iterator.hasNext()) { ResolveInfo info = iterator.next(); if (info == null || info.activityInfo == null || !isVisiblePackage(info.activityInfo.applicationInfo)) { iterator.remove(); } } appResult.addAll(hostResult); } } if (slice) { return ParceledListSliceCompat.create(appResult); } return appResult; }
public Intent getLaunchIntent(String packageName, int userId) { VPackageManager pm = VPackageManager.get(); Intent intentToResolve = new Intent(Intent.ACTION_MAIN); intentToResolve.addCategory(Intent.CATEGORY_INFO); intentToResolve.setPackage(packageName); List<ResolveInfo> ris = pm.queryIntentActivities(intentToResolve, intentToResolve.resolveType(context), 0, userId); // Otherwise, try to find a main launcher activity. if (ris == null || ris.size() <= 0) { // reuse the intent instance intentToResolve.removeCategory(Intent.CATEGORY_INFO); intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER); intentToResolve.setPackage(packageName); ris = pm.queryIntentActivities(intentToResolve, intentToResolve.resolveType(context), 0, userId); } if (ris == null || ris.size() <= 0) { return null; } Intent intent = new Intent(intentToResolve); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setClassName(ris.get(0).activityInfo.packageName, ris.get(0).activityInfo.name); return intent; }
public Intent getLaunchIntent(String packageName, int userId) { VPackageManager pm = VPackageManager.get(); Intent intentToResolve = new Intent(Intent.ACTION_MAIN); intentToResolve.addCategory(Intent.CATEGORY_INFO); intentToResolve.setPackage(packageName); List<ResolveInfo> ris = pm.queryIntentActivities(intentToResolve, intentToResolve.resolveType(context), 0, userId); // Otherwise, try to find a main launcher activity. if (ris == null || ris.size() <= 0) { // reuse the intent instance intentToResolve.removeCategory(Intent.CATEGORY_INFO); intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER); intentToResolve.setPackage(packageName); ris = pm.queryIntentActivities(intentToResolve, intentToResolve.resolveType(context), 0, userId); } if (ris == null || ris.size() <= 0) { return null; } Intent intent = new Intent(intentToResolve); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setClassName(ris.get(0).activityInfo.packageName, ris.get(0).activityInfo.name); return intent; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentActivities((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); if (_hostResult != null) { List<ResolveInfo> hostResult = slice ? ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { Iterator<ResolveInfo> iterator = hostResult.iterator(); while (iterator.hasNext()) { ResolveInfo info = iterator.next(); if (info == null || info.activityInfo == null || !isVisiblePackage(info.activityInfo.applicationInfo)) { iterator.remove(); } } appResult.addAll(hostResult); } } if (slice) { return ParceledListSliceCompat.create(appResult); } return appResult; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentActivities((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); if (_hostResult != null) { List<ResolveInfo> hostResult = slice ? (List<ResolveInfo>) ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { hostResult.removeIf(info -> info == null || info.activityInfo == null || !isVisiblePackage(info.activityInfo.applicationInfo)); appResult.addAll(hostResult); } } if (slice) { return ParceledListSliceCompat.create(appResult); } return appResult; }