如何在用户取消共享活动时收到通知?

时间:2015-12-08 18:37:42

标签: android android-intent sharing

我正在开发一个应用程序,允许用户启动共享某些声音文件的活动。我想知道用户是否取消了声音分享。

我的代码:

                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_SEND);
                sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse(Utils.createFile(Utils.getRingtone_name()[1], "share")));
                sendIntent.setType("audio/*");
                startActivity(sendIntent);

如果用户取消了分享,我想做一些动作。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

  

我正在开发一个应用程序,在其中用户共享一些声音文件

您还没有描述过自己是如何做到这一点的。对于这个答案,我猜你指的是ACTION_SENDACTION_SENDTO,因为这些是用于"分享"的典型Intent行动。各种各样的行动。

如果这个猜测不正确,请编辑您的问题以提供您正在使用的实际Java代码,以及#34;分享一些声音文件"。

  

我想知道用户何时取消声音分享

您无法知道用户通过ACTION_SENDACTION_SENDTO分享的内容对用户做了什么或不做了什么。

如果您要实现自己的ContentProvider来提供声音文件,则可以了解其他应用是否已请求该内容。但是,这仍然不意味着用户实际上已经完成了对该内容的某些操作。例如,如果其他应用程序是电子邮件客户端,则可能已阅读内容以为其撰写窗口创建电子邮件附件,但随后用户选择不发送电子邮件。

  

用户可以通过按后退按钮

取消此操作

按BACK按钮并不一定意味着用户没有共享内容。

根据您的评论,我认为您提出了一个不同的问题:您如何知道用户是否选择了当您尝试分享内容时可能出现的活动选择器中的内容?

在Android 5.1及更高版本中,您可以使用the three-parameter createChooser() method安排查看用户通过标准系统选择器对话框选择的内容。在此之前,我知道用户选择的唯一方法是不使用系统选择器对话框,而是自己处理。您可以创建自己的"选择器",在queryIntentActivities() PackageManager上选择var someVitalObject = someServiceReference.GetVitalObject(); if (someVitalObject == null) { throw new IDontKnowWhatException(); // what exception should I throw here? } 给您的可用选项。

答案 1 :(得分:1)

您无法知道共享意图是否成功或用户真正共享或丢弃。无论你分享什么 - 文字,图像,声音或视频等。

我认为你确切地问this - Successful share intent for android