我在Play商店找到了一些很棒的应用程序。
这些应用可以查找我每个已安装应用中的所有活动。
当我点击活动时,它只是直接运行。
怎么可能?
我们可以找出任何应用中的任何活动吗?
是否可以运行其他应用程序的任何活动?即使该活动在清单文件中没有intent-filter?
Screen shot - Quick shortcut maker
如果添加一些示例代码,我会很感激。
答案 0 :(得分:1)
首先在您的设备中获取所有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);
}
}