3 回答
TA贡献1863条经验 获得超2个赞
不,你不能。意向应该以这种方式工作。如果必须强制打开某个特定应用程序,请在目标应用程序支持的情况下使用明确的意图。在不知道目标应用程序的程序包名称或组件名称,数据类型或MIME类型的情况下,您不能强制特定的应用程序在通用意图上运行。
TA贡献1890条经验 获得超9个赞
有一种方法可以直接打开您想要的意图。您可以获得意向列表,仅打开一个。
参见以下代码:
private void initShareIntent(String type) {
boolean found = false;
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("image/jpeg");
// gets the list of intents that can be loaded.
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0);
if (!resInfo.isEmpty()){
for (ResolveInfo info : resInfo) {
if (info.activityInfo.packageName.toLowerCase().contains(type) ||
info.activityInfo.name.toLowerCase().contains(type) ) {
share.putExtra(Intent.EXTRA_SUBJECT, "subject");
share.putExtra(Intent.EXTRA_TEXT, "your text");
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(myPath)) ); // Optional, just if you wanna share an image.
share.setPackage(info.activityInfo.packageName);
found = true;
break;
}
}
if (!found)
return;
startActivity(Intent.createChooser(share, "Select"));
}
}
如果您想打开Twitter,请执行以下操作:
initShareIntent("twi");
如果是facebook:
initShareIntent("face");
如果邮件:
initShareIntent("mail"); // or "gmail"
如果要显示与类型匹配的意图列表,请使用第一个机器,请参阅此文章:Android Intent for Twitter application
- 3 回答
- 0 关注
- 389 浏览
添加回答
举报