是否有可能检测到ACTION_SEND意图是否成功?

时间:2017-08-23 23:33:55

标签: android android-intent

我有一个简单的Android应用程序,代码如下(来自Android Documentation):

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));

但我无法找到检测电子邮件是否已成功发送(或用户取消)的方法。有没有办法阅读意图回应?

2 个答案:

答案 0 :(得分:2)

我认为没有一种可靠的方法可以做到。

您可以使用startActivityForResult()发起发送,并希望处理Intent的活动回复RESULT_OK。但你不能总是依赖它来工作。

然后你可以检查

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Toast.makeText(this,"Successfully Sharing", Toast.LENGTH_SHORT).show();

    }
}

答案 1 :(得分:2)

  

有没有办法阅读意图回应?

不是来自任意行为的任意活动。

Intent操作的文档会告诉您是否有预期的输出。例如,ACTION_GET_CONTENT is documented to have output。对于那些Intent操作,您使用startActivityForResult(),部分输出将是"结果代码"通常会告诉你结果是什么。

然而:

  • 并非记录每个Intent操作都有输出。值得注意的是,ACTION_SEND is not documented to have output。在这种情况下,您不能使用startActivityForResult()(而是使用startActivity())。即使您使用startActivityForResult(),也无法知道否定结果是否意味着用户已取消或其他活动是否仅仅遵循文档并且未返回结果。

  • 有些活动是错误的,无法返回结果。

  • 您对成功结果的定义以及活动对成功结果的定义可能会有所不同。