Androidアプリでプッシュ通知の効果測定をしたいと思い、そのために通知をタップしたことによる起動かそれ以外による起動かを判別したいと思っています。

Activity#onStart()Activity#getIntent()よりIntentを取得し、時起動方法によってIntentが次のようになっていることはわかりました。

  • Android Studioやランチャーなどから起動させた場合 (1)
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.sakaguchi/.MainActivity }
  • 通知をタップして起動させた場合 (2)
    (PendingIntentにはactionやcategoryは設定していない)
Intent { flg=0x4400000 cmp=com.example.sakaguchi/.MainActivity bnds=[0,363][1080,555] }

ですが、おそらくその時のタスクが生きているからだと思うのですが、例えば通知から起動させた時に以下のような挙動になっています。

  1. 受信した通知をタップしてアプリを起動させる
    →onStart()にて(2)のIntentを取得
  2. ホームボタンでホームへ戻る
  3. ランチャーからアプリを起動させる
    →onStart()にて再び(2)のIntentを取得

ランチャーから起動させた後プッシュ通知より起動させた時はこうならずにそれぞれのIntentを取得することができます。

どのようにすればユーザーが通知からあるいはそれ以外から起動したことを判別できるでしょうか?