发送Intent时检测目标应用程序

时间:2013-09-19 12:35:03

标签: android android-intent

我正在使用发送意图(ACTION_SEND)共享图像。

我想知道是否选择了任何应用程序进行共享。我怎么能这样做,如何知道图像是否成功发送?

我以前用来共享图片的代码在这里:

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
share.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(new File(imageSharePath)));
startActivity(Intent.createChooser(share, "Share Image"));

2 个答案:

答案 0 :(得分:11)

您需要为活动选择实施自己的对话框。

要创建此类对话框,您需要使用PackageManager.queryIntentActivities()。此方法返回List<ResolveInfo>

ResolveInfo包含有关活动的一些信息(例如resolveInfo.activityInfo.packageName),在PackageManager的帮助下,您可以获得其他信息(对于在对话框中显示活动非常有用) - 应用程序图标可绘制,应用程序标签等

在对话框(或作为对话框设置样式的活动)的列表中显示结果。单击某个项目后,创建新的Intent.ACTION_SEND,添加所需的内容并添加所选活动的包intent.setPackage(pkgName)

答案 1 :(得分:1)

以上答案不再正确。

从API 22开始,可以在用户共享时检测目标应用程序。

有关详细信息,请参见:

Get IntentSender object for createChooser method in Android

https://medium.com/code-with-lisa/get-results-from-android-chooser-9cfc5445a871