AndroidでIntentを受け取ったときにどういうフラグが設定されているかを調べたい時、単純にintent.flags
を参照するだけだと分かりづらかったので、フラグの名称を出力するために以下のコードを書きました。
Intent::class.java.fields.forEach { field ->
if (field.name.startsWith("FLAG_")) {
val flag = field.get(null)
if (flag is Int) {
if (flag and intent.flags != 0) {
Log.d("MyApp", "Intent Flag ${field.name}")
}
}
}
}
これでIntent Flag FLAG_ACTIVITY_NEW_TASK
などがログに出力されます。