2012-04-28 8 views
5

私はActivity Xを実装します。私はService SからPendingIntent Pを得ました。私は確かに、Pはが不明であることを指摘していますActivity Yその結果setResultメソッドで結果Rを返します。結果のためにPendingIntentを開始します

X.onActivityResultの結果Rを受け取るには、XでPを開始する必要がありますか?

+0

PS。通常の 'startActivityFotResult'呼び出しと同様に、Yがキャンセルされたとき(Rは' RESULT_CANCELED'と同じです)に通知されたいと思います。 – wrygiel

答えて

-1

私はこの問題を掘りいくつかの時間を費やし、私の結論は、それが両方活動(XY)で特定の変更を加えることなく不可能であるということである:Activity X

  • もう1つPendingIntentP2)を作成する必要があります。Activity Xコンテキストでは、X.createPendingResultを使用してください。さて、P2でデータを送信すると、X.onActivityResultが呼び出されます。
  • の追加番号としてPendingIntent P2を添付してから、send-ingする必要があります。 Activity Y

:あなたは、そのgetIntent()からPendingIntent P2を抽出する必要があり

  • setResultに電話するのではなく、一部のローカルフィールドで結果を設定してください。
  • onDestroyを無効にし、そこからPendingIntent P2を送信する必要があります。

なぜこのようになりますか?

私はそれは種類のセキュリティに関するものだと思います。 Activity Yは、別タスクActivity X)で開始できます。たぶんsetResultは、と同じタスク内で結果がに達するのを処理することを意図していますか?タスクの定義については、hereを参照してください。

+0

私は自分の質問に答えました。私は専門家ではなく、私は間違っているかもしれません。誰かが確認するまで、この回答を受け入れることは賢明ではないかもしれません。 – wrygiel

5

Googleはサービスが同じシナリオでパーミッションエラーを解決するためにPendingIntentオブジェクトを使用しています再生:

IntentSender intentSender = pendingIntent.getIntentSender(); 
activity.startIntentSenderForResult(intentSender, REQUEST_CODE, null, 0, 0, 0); 

は、ドキュメントのためActivity.startIntentSenderForResult()を参照してください。

関連する問題