14

当共享弹出窗口出现时,我在 WhatsApp 上成功共享了内容,但仍然返回 RESULT_CANCELLED。当我使用 Gmail 发送电子邮件时,结果相同。

调用共享意图,ACTION_SEND总是startActivityForResult返回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 代码

@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();
        }
    }
}
4

2 回答 2

39

startActivityForResult()仅适用于旨在以这种方式调用的活动。如果您调用的活动没有显式返回结果,您将获得默认结果 RESULT_CANCELED。显然ACTION_SEND不是设计成这样调用的。的文档表明ACTION_SEND它不生成输出(即:不生成结果)。

请参阅文档Activity.startActivityForResult()

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

于 2013-06-07T10:59:56.553 回答
0

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

于 2013-06-06T20:58:24.720 回答