- PendingIntent#getActivity
- PendingIntent#getService
- PendingIntent#getBroadcast
の第四引数は「PendingIntent.FLAG_CANCEL_CURRENT」を指定する。
理由
PendingIntent.FLAG_UPDATE_CURRENT を指定していると、一部機種でうまく動作しないことがあるため
不具合の再現手順
- PendingIntent.FLAG_UPDATE_CURRENTを指定したNotificationを行う
- アプリをアンインストール
- 同一アプリを再インストール
- 1.と同様のNotificationを行う
上記手順を行うと、ステータスバーにある通知をタップしてもgetActivityで指定しているActivityが起動されないなどの不具合が一部端末で発生する
(現状、Xperia Z2 SO-03F確認)
原因の予想
FLAG_UPDATE_CURRENT は、「存在していればそれを使う。新しい設定で置き換えない。」動作を行うフラグのため、
アンインストール前の同一PendingIntentのNotificationが残っており、アンインストール前の情報のアプリを起動しようとしているためだと思われます。
PendingIntent.FLAG_CANCEL_CURRENTを指定すると、「現在設定されているものがあれば、それをキャンセルして新しい設定を行う。」ので、正常に動作されました。