启动特定的应用程序阻止Intent选择器

时间:2014-06-27 14:22:05

标签: android android-intent

我已经为Intent声明了自定义操作,并根据可以处理Intent的应用程序构建了UI。现在我知道按钮单击应该启动哪个应用程序,如何阻止选择器显示所有可能的应用程序。

final Intent intent = new Intent();
intent.setAction(CUSTOM_ACTION);

PackageManager packageManager = getPackageManager();
final List<ResolveInfo> activities = packageManager
        .queryIntentActivities(intent, 0);

for (int i = 0; i < activities.size(); i++) {
    final ResolveInfo info = activities.get(i);

    Button b = new Button(this);
    b.setText(info.loadLabel(packageManager));

    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // This line was the solution
            intent.setPackage(info.activityInfo.packageName);

            startActivityForResult(intent, REQUEST_CODE);
        }
    });

    mLayout.addView(b);
}

感谢。

1 个答案:

答案 0 :(得分:2)

查看Intent.setPackage(String),它允许您仅使用提供的包名称启动Intent,从而绕过选择器。如果您要使用的软件包在Android上不是原生的,我仍然建议您先检查它的存在,否则提醒用户。