You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Android应用的全部Intent?现有代码仅输出主Intent

获取Android应用的全部Intent

原代码仅能提取主Intent(android.intent.action.MAIN),要获取目标应用的所有注册Intent,需要遍历应用内所有Activity的Intent Filter配置——因为每个Activity可能注册了多个不同的Intent规则。

原代码(仅获取主Intent)

以下代码仅将主意图(android.intent.action.MAIN)写入JSON

Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setPackage(applicationInfo.packageName);
List<ResolveInfo> intentList = packageManager.queryIntentActivities(intent, 0);
                
JSONArray intentsArray = new JSONArray();
for (ResolveInfo resolveInfo : intentList) {
    intent = new Intent(Intent.ACTION_MAIN);
    intent.setComponent(new ComponentName(resolveInfo.activityInfo.packageName,resolveInfo.activityInfo.name));

    String action = intent.getAction();
    intentsArray.put(action);
}

修改后的代码(获取全部Intent)

try {
    // 获取应用的PackageInfo,包含所有Activity及Intent Filter信息
    PackageInfo packageInfo = packageManager.getPackageInfo(
            applicationInfo.packageName,
            PackageManager.GET_ACTIVITIES | PackageManager.GET_INTENT_FILTERS
    );

    JSONArray allIntentsArray = new JSONArray();

    // 遍历应用内所有Activity
    for (ActivityInfo activityInfo : packageInfo.activities) {
        // 遍历当前Activity的所有Intent Filter
        if (activityInfo.intentFilters != null) {
            for (IntentFilter filter : activityInfo.intentFilters) {
                JSONObject intentObj = new JSONObject();

                // 提取所有Intent Action
                JSONArray actionsArray = new JSONArray();
                for (int i = 0; i < filter.countActions(); i++) {
                    actionsArray.put(filter.getAction(i));
                }
                intentObj.put("actions", actionsArray);

                // 提取所有Intent Category
                JSONArray categoriesArray = new JSONArray();
                for (int i = 0; i < filter.countCategories(); i++) {
                    categoriesArray.put(filter.getCategory(i));
                }
                intentObj.put("categories", categoriesArray);

                // 提取Intent Data Scheme(可选,按需添加)
                if (filter.getScheme(0) != null) {
                    intentObj.put("scheme", filter.getScheme(0));
                }

                // 添加关联的Activity组件信息
                intentObj.put("activity_name", activityInfo.name);
                intentObj.put("package_name", activityInfo.packageName);

                allIntentsArray.put(intentObj);
            }
        }
    }

    // allIntentsArray 即为包含应用全部Intent信息的JSON数组
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

关键说明

  • 使用PackageManager.GET_ACTIVITIES | PackageManager.GET_INTENT_FILTERS标记,确保获取完整的Activity和Intent Filter配置
  • 每个Intent Filter可能包含多个Action、Category,需逐个提取
  • 可根据需求扩展提取Data类型、MIME类型等其他Intent属性

内容的提问来源于stack exchange,提问作者SVOSilas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 18:52:49