Android:通过 Intent.ACTION_SEND 分享(某事),然后自动返回我的应用

Posted

技术标签:

【中文标题】Android:通过 Intent.ACTION_SEND 分享(某事),然后自动返回我的应用【英文标题】:Android: Sharing (something) via Intent.ACTION_SEND, then automatically return to my app 【发布时间】:2012-09-24 07:38:06 【问题描述】:

我想分享我的应用程序中的一些内容。 一旦共享(例如 - 发送消息),我希望我的应用程序再次处于活动状态并且发送应用程序消失。 使用下面的代码,我希望 onActivityResult 被调用,但它从未被调用。

发送电子邮件后,我的应用程序再次出现,但在发送 SMS(“消息”)后,消息应用程序仍然存在。 (onActivityResult 永远不会被调用)

谢谢:-)

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain"); 
String shareBody = "This is a test";
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "You have to see this!");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);

startActivityForResult(Intent.createChooser(sharingIntent, "Share via"),1);

getFragmentManager().popBackStack();

【问题讨论】:

【参考方案1】:

只有当用户按下后退按钮时才会调用它。因为您正在开始一个新的意图,所以您将控制权交给了另一个应用程序。 所以通常情况下,如果用户按下后退按钮(我会作为 Android 用户这样做),用户将返回到您的应用程序。这是我更喜欢在这种情况下使用的方式,据我所知,这也是在 Android 中执行此操作的唯一方式。

【讨论】:

谢谢,但我认为如果用户使用允许他分享某些内容(如 URL)的应用程序,那么在分享后没有理由“停留”在消息传递应用程序上。他们希望在“分享”后立即恢复之前的活动。此外,奇怪的是“电子邮件”和“消息”具有完全不同的行为。 @JRun:ACTION_SEND 操作中发生的事情的决定取决于其他应用程序(和用户),而不是您。 ACTION_SEND 不是为与 startActivityForResult() 一起使用而设计的,这就是为什么您没有得到结果,而 startActivityForResult() 与其他应用程序的行为无关。 @CommonsWare 谢谢。不是我希望的答案,但我想这就是我必须解决的问题。

以上是关于Android:通过 Intent.ACTION_SEND 分享(某事),然后自动返回我的应用的主要内容,如果未能解决你的问题,请参考以下文章

Android:通过 Intent.ACTION_SEND 分享(某事),然后自动返回我的应用

android android.intent.action.call 使 Android 应用程序崩溃?

Android通过Intent.ACTION_CLOSE_SYSTEM_DIALOGS监听Home按键消息

Android O 上的 android.intent.action.SEND - URI 包含 file:// 网址而不是 content://

使用 Android Intent.ACTION_SEND 发送电子邮件

使用 Android Intent.ACTION_SEND 发送电子邮件