如何"快速快捷方式制造商"和"应用程序快捷方式制造商"工作?

时间:2017-07-15 16:14:37

标签: android android-intent android-activity shortcut

我在Play商店找到了一些很棒的应用程序。

这些应用可以查找我每个已安装应用中的所有活动。

当我点击活动时,它只是直接运行。

怎么可能?

我们可以找出任何应用中的任何活动吗?

是否可以运行其他应用程序的任何活动?即使该活动在清单文件中没有intent-filter?

Screen shot - Quick shortcut maker

如果添加一些示例代码,我会很感激。

1 个答案:

答案 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);
        }
    }