NotificationでIntentをActivityに渡して起動するときに注意するあれこれ

メモ

PendingIntentの情報が更新されない

getActivityで取得している第3引数を確認しましょう。この値が0だと更新されません。

PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

起動時にIntent情報を取得したい

onNewIntent()を使って取得しましょう。この時、activityのlunchModeがsingleTopを含む単一アプリにしておかないと別のActivityが立ち上がって取得出来ません。

public class NotificationIntentTestAcitivty extends Activity {
	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		// intentの情報を取得してうんちゃらかんちゃら
	}
}

Intentで起動された場合も起動時に取得したものと同じ事をしたい

onCreate()でonNewIntent()を呼び出しましょう。

public class NotificationIntentTestAcitivty extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// getIntentでintentを取得してonNewIntetを起動
		this.onNewIntent(getIntent());
	}

	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		// intentの情報を取得してうんちゃらかんちゃら
	}
}

まとめ

以上、知ってる人には当たり前だけど忘れないようにメモ。