android - "Quick shortcut maker"和 "App shortcut maker"是如何工作的?

标签 android android-intent android-activity shortcut

我在 Play 商店发现了一些很酷的应用。

这些应用程序可以找到我安装的每个应用程序中的所有 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/

相关文章:

java - ImageView在滑动面板中消失

android - 一项 Activity 中不同布局的按钮状态?

android - 如何为不同的 Activity 实现对话?

android - ImageView 中的 Vimeo 视频缩略图

java - 第二个 Activity 不会返回到第一个 Activity

java - 从通知栏打开目录

android - 如何获取Share Intent回调结果

java - Android Maven 错过了 jar 中的类(class)

javascript - 运行描述中给出的 cordova 应用程序时出现 2-3 个弹出窗口,然后浏览器卡住

Android Studio 在真实设备上运行应用程序需要很长时间