2


アクティビティをインテント フィルター (プレーンテキスト) として登録していますが、複数のインテントを受信するという問題があります。これは私の状況です:

  1. メールクライアントを開きます->テキストをマークします->「共有ボタン」を押し、正しくリストされているアクティビティを選択します(そのようなアクションのインテントフィルターとして登録されているため)
  2. アクティビティが開き、インテントの EXTRA_TEXT (メールからマークされたテキスト) に正しい値が含まれていることがはっきりとわかります
  3. ここまでは順調ですが、HOME ボタンを押すと (アクティビティが閉じられ、onStop() が呼び出されるようです)、メール クライアントが再び開きます -> 別のテキストにマークを付けます -> [共有ボタン] を押します。その後、突然アクティビティが開き(利用可能なアクティビティのリストが再び選択されると予想されます)、受信したインテントには、EXTRA_TEXT に新しくマークされたテキストではなく、元のテキストが含まれます。

ここで何が欠けていますか?このように意図を介して新しいコンテンツを受け取る方法は? 以前のインテントを何らかの方法で無効にする必要がありますか?

「ホーム」ボタンの代わりに「戻る」ボタンを使用すると正しく機能し、新しいインテントには期待どおりに新しくマークされたテキストが含まれていると言わざるを得ません。ここの違いは何ですか?

私はこの方法で意図を取得します:

    intent = getIntent();
    intentAction = intent.getAction();
    if (intentAction.equals(Intent.ACTION_SEND) && intent.hasExtra(Intent.EXTRA_TEXT)) {
        Bundle bundle = intent.getExtras();

ありがとう

4

1 に答える 1

1

Activity launchMode を「singleTop」に設定してから実装してみてください...

@Override
protected void onNewIntent (Intent intent) {
    ...
}

そのIntentメソッドに渡されるのは、新しいものである必要があります。

onNewIntentのドキュメントを参照してください

編集:将来の読者のために-以下のコメントに基づいて、ドキュメントが正しくない可能性があり、launchModeは「singleTop」ではなく「singleTask」である必要があります。

于 2012-12-18T20:35:31.297 に答える