通知およびアプリケーション歴史の競合からPendingIntent

StackOverflow https://stackoverflow.com/questions/2541884

  •  23-09-2019
  •  | 
  •  

質問

私は次のようなものとの通知を作成しています:

    Intent ni = new Intent(this, SomeActivity.class);
    ni.putExtra("somestring", "somedata");
    PendingIntent contentIntent = 
        PendingIntent.getActivity(this, 0, ni, 
                PendingIntent.FLAG_UPDATE_CURRENT|PendingIntent.FLAG_ONE_SHOT);
    Context context = getApplicationContext();

    notification.setLatestEventInfo(context, 
            res.getString(R.string.app_name), 
            text, contentIntent);

ここで重要なのは、通知のための意図に余分なデータです。私は、通知をクリックすると、それはSomeActivityが現れたら、それは活動を立ち上げると、余分なデータが利用可能である。

私は、アプリを終了し、最近の活動リストアップ来るまでホームボタンを押したまま、再度アプリを開くことを選択した場合、しかし、余分なデータがまだ渡されます。私はこのデータが渡されることができます方法はありますののみのアプリは、ありません最近の活動のリストから通知を経由して開かれた場合はどうなりますか?

役に立ちましたか?

解決

:私は活動はこれで最近の活動]ダイアログから起動されたかどうかを確認することができますように

ルックス

if((getIntent().getFlags() & 
        Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
    // ignore extras
}
else {
    // do not ignore extras
}

これが最善の方法である場合、私は知りませんが、それは作業を行います。

他のヒント

異なるIntentを使用してください。たとえば、あなたは、いくつかのカスタムアクション文字列の<intent-filter>を追加することができますし、あなたのNotificationベースPendingIntentのためにそれを使用します。言い換えれば、あなたは最も最近の活動]ダイアログボックスを変更することはできませんが、紛争のあなたの側を変更することができます。

をお試しください

int NOTIFICATION_CODE = 1;

PendingIntent contentIntent = 
          PendingIntent.getActivity(this, 
                                    NOTIFICATION_CODE, 
                                    ni,
                                    PendingIntent.FLAG_UPDATE_CURRENT | 
                                    PendingIntent.FLAG_ONE_SHOT
                                   );

すべての通知の変更NOTIFICATION_CODE値ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top