14

共有ポップアップが表示されるので、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 コード

@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 に答える