对于Intent.ACTION_SEND,StartActivityForResults始终返回RESULT_CANCELLED

时间:2013-05-18 07:59:02

标签: android start-activity

随着分享弹出窗口显示,我成功分享了WhatsApp上的内容,但仍然返回RESULT_CANCELLED。使用Gmail发送电子邮件时的结果相同。

调用分享意图,ACTION_SENDstartActivityForResult始终返回CANCELLED

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    sharingIntent.putExtra(android.content.Intent.EXTRA_TITLE, "Taxeeta, Cab Around The Curb");
    sharingIntent
        .putExtra(
            android.content.Intent.EXTRA_TEXT,
                "Hiring a cab no longer needs you to wait on call centers, or pay a"
                + " convenience (yeah right!!) charge. Taxeeta connects you"
                + " to drivers directly, for a quick book experience. With Taxeeta"
                + " you can take matters in your own hands (literally). To download"
                + " the app for your phone visit http://www.taxeeta.com");
    startActivityForResult(Intent.createChooser(sharingIntent, "Share and earn a extra Priviledge"), 111);

ActivityForResult Code

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 111) {
        if (resultCode == RESULT_OK) {
            Toast.makeText(this, "Ok DUDE", Toast.LENGTH_LONG).show();
        } else if (resultCode == RESULT_CANCELED) {
            Toast.makeText(this, "Oversmart Eh!!", Toast.LENGTH_LONG).show();
        }
    }
}

2 个答案:

答案 0 :(得分:36)

startActivityForResult()仅适用于那种打算调用的活动。如果您调用的活动未显式返回结果,您将获得默认结果RESULT_CANCELED。显然,ACTION_SEND并非旨在以这种方式调用。 ACTION_SEND的{​​{3}}表示不生成输出(即:不生成结果)。

请参阅Activity.startActivityForResult()的{​​{3}}:

  

请注意,此方法只应与Intent协议一起使用   被定义为返回结果。在其他协议中(例如   ACTION_MAIN或ACTION_VIEW),你可能无法得到结果   期望。例如,如果您要启动的活动使用   singleTask启动模式,它不会在你的任务中运行,因此你会   立即收到取消结果。

答案 1 :(得分:0)

我有同样的问题,我认为结果将始终是“已取消”,因为即使发送电子邮件或没有活动将被杀死。