在使用Intent进行共享(Intent.ACTION_SEND
)时,如何记住上一个用于共享的应用程序并为该应用程序添加快捷方式?
在我的应用程序中,如果我刚刚使用gmail分享了我的文章,是否可以添加快捷方式“与gmail共享”,这样就可以直接与gmail共享而无需选择应用程序?
预先感谢!
没有侦听器可检测您在默认意图选择器中选择的应用程序。
因此,您必须创建一个对话框,其中包含您ACTION_SEND
自己的所有意图。
您可以ACTION_SEND
通过以下代码获取其意图列表。
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
PackageManager pm = v.getContext().getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
然后,使用列表构建对话框,为每个意图添加侦听器。
用户点击其中一个后,保存其“包名”。您可以通过查找包名称ResolveInfo.activityInfo.name
。
接下来,您可以使用包名称来过滤ACTION_SEND
,仅触发过滤后的应用。
这是启动Twitter应用程序的代码段。
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
PackageManager pm = v.getContext().getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
for (final ResolveInfo app : activityList) {
if ("com.twitter.android.PostActivity".equals(app.activityInfo.name)) {
final ActivityInfo activity = app.activityInfo;
final ComponentName name = new ComponentName(activity.applicationInfo.packageName,activity.name);
shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
shareIntent.setComponent(name);
v.getContext().startActivity(shareIntent);
break;
}
}
希望能帮助到你!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句