我已经为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);
}
感谢。
答案 0 :(得分:2)
查看Intent.setPackage(String)
,它允许您仅使用提供的包名称启动Intent,从而绕过选择器。如果您要使用的软件包在Android上不是原生的,我仍然建议您先检查它的存在,否则提醒用户。