Android 发送意图时检测目标应用程序

Android 发送意图时检测目标应用程序,android,android-intent,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(I

我正在使用发送意图(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"));

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

要创建这样的对话框,您需要使用
PackageManager.queryIntentActivities()
。此方法返回
列表

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


在对话框(或样式为对话框的活动)的列表中显示结果。单击一个项目创建新的
Intent.ACTION\u SEND
,添加所需内容并添加所选活动的包
Intent.setPackage(pkgName)
,以上答案不再正确

由于API 22,当用户共享时,可以检测目标应用程序

详情请参阅:


你这是什么意思?“我想知道是否选择了任何应用程序进行共享。”他想知道选择了哪个应用程序-通过facebook、twitter、蓝牙等共享图片。此代码打开应用程序列表对话框,允许我们共享图片。然后我们选择应用程序,如whats应用程序、facebook等。但我们如何知道任何应用程序是否被选择用于共享。
您无法获得此类信息。
然后您显示解决方案:)这是唯一的解决方案,即使在我的回答中,我也解释了解决方案的实现方式。好的,但第一句话不属于这里。。。从这个角度来看,答案似乎不一致。不管怎样,+1,就在你提出建议之前几秒钟。我以后会处理的future@zanky:如果您的问题没有问题,请不要忘记接受答案:)中间链接非常有用。她的帖子中有一个小错误。。。在AndroidManifest中,您需要对BroadcastReceiver使用完全限定名,而不仅仅是类名(即com.mycompany.packagename.MyBroadcastReceiver)