我在 Play 商店发现了一些很酷的应用。
- https://play.google.com/store/apps/details?id=com.sika524.android.quickshortcut&hl=no
- com.bhanu.appshortcutmaker
这些应用程序可以找到我安装的每个应用程序中的所有 Activity 。
当我点击 Activity 时,它直接运行。
这怎么可能?
我们能找出任何应用程序中的任何 Activity 吗?
是否可以通过其他应用运行任何 Activity ?即使该 Activity 在 list 文件中没有 Intent 过滤器?
Screen shot - Quick shortcut maker
如果添加一些示例代码,我将不胜感激。
最佳答案
首先获取设备中安装 Activity 的所有ActivityInfo
。
public List<ActivityInfo> getAllRunningActivities(Context context) {
List<ActivityInfo> result = new ArrayList<>();
List<ApplicationInfo> packages = context.getPackageManager()
.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo applicationInfo : packages) {
Log.d(TAG, "getAllRunningActivities: " + applicationInfo.packageName);
try {
PackageInfo pi = context.getPackageManager().getPackageInfo(
applicationInfo.packageName, PackageManager.GET_ACTIVITIES);
Collections.addAll(result, pi.activities);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
}
return result;
}
然后使用该信息startActivity()
。
for (ActivityInfo activityInfo : getAllRunningActivities(this)) {
Log.d(TAG, "onCreate: " + activityInfo.toString());
if (yourCondition && filterResult) {
Intent intent = new Intent();
intent.setClassName(activityInfo.applicationInfo.packageName, activityInfo.name);
startActivity(intent);
}
}
关于android - "Quick shortcut maker"和 "App shortcut maker"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45120267/