Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to find out the startActivity intent flags an activity was started with?

I would like to know the flags running (e.g. foreground) activity was started with? Is there a way to do that besides inspecting the logcat? Is there an app that actually does that?

like image 418
smichak Avatar asked Dec 03 '25 11:12

smichak


2 Answers

Currently, for debugging, I use this function to see the flag which open the activity

@RequiresApi(Build.VERSION_CODES.R)
fun getIntentFlag(flag: Int) : String{
    val flags = listOf<Pair<String, Int>>(
        Pair("Intent.FLAG_GRANT_READ_URI_PERMISSION",Intent.FLAG_GRANT_READ_URI_PERMISSION),
        Pair("Intent.FLAG_GRANT_WRITE_URI_PERMISSION",Intent.FLAG_GRANT_WRITE_URI_PERMISSION),
        Pair("Intent.FLAG_FROM_BACKGROUND",Intent.FLAG_FROM_BACKGROUND),
        Pair("Intent.FLAG_DEBUG_LOG_RESOLUTION",Intent.FLAG_DEBUG_LOG_RESOLUTION),
        Pair("Intent.FLAG_EXCLUDE_STOPPED_PACKAGES",Intent.FLAG_EXCLUDE_STOPPED_PACKAGES),
        Pair("Intent.FLAG_INCLUDE_STOPPED_PACKAGES",Intent.FLAG_INCLUDE_STOPPED_PACKAGES),
        Pair("Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION",Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION),
        Pair("Intent.FLAG_GRANT_PREFIX_URI_PERMISSION",Intent.FLAG_GRANT_PREFIX_URI_PERMISSION),
        Pair("android.content.Intent.FLAG_DEBUG_TRIAGED_MISSING (system)",256), // android.content.Intent.FLAG_DEBUG_TRIAGED_MISSING
        Pair("Intent.FLAG_IGNORE_EPHEMERAL (system)",512), // Intent.FLAG_IGNORE_EPHEMERAL
        Pair("Intent.FLAG_ACTIVITY_MATCH_EXTERNAL",Intent.FLAG_ACTIVITY_MATCH_EXTERNAL),
        Pair("Intent.FLAG_ACTIVITY_NO_HISTORY",Intent.FLAG_ACTIVITY_NO_HISTORY),
        Pair("Intent.FLAG_ACTIVITY_SINGLE_TOP",Intent.FLAG_ACTIVITY_SINGLE_TOP),
        Pair("Intent.FLAG_ACTIVITY_NEW_TASK",Intent.FLAG_ACTIVITY_NEW_TASK),
        Pair("Intent.FLAG_ACTIVITY_MULTIPLE_TASK",Intent.FLAG_ACTIVITY_MULTIPLE_TASK),
        Pair("Intent.FLAG_ACTIVITY_CLEAR_TOP",Intent.FLAG_ACTIVITY_CLEAR_TOP),
        Pair("Intent.FLAG_ACTIVITY_FORWARD_RESULT",Intent.FLAG_ACTIVITY_FORWARD_RESULT),
        Pair("Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP",Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP),
        Pair("Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS",Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS),
        Pair("Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT",Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT),
        Pair("Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED",Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED),
        Pair("Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY",Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY),
        Pair("Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET (deprecated)",Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET),
        Pair("Intent.FLAG_ACTIVITY_NEW_DOCUMENT",Intent.FLAG_ACTIVITY_NEW_DOCUMENT),
        Pair("Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET (deprecated)",Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET),
        Pair("Intent.FLAG_ACTIVITY_NO_USER_ACTION",Intent.FLAG_ACTIVITY_NO_USER_ACTION),
        Pair("Intent.FLAG_ACTIVITY_REORDER_TO_FRONT",Intent.FLAG_ACTIVITY_REORDER_TO_FRONT),
        Pair("Intent.FLAG_ACTIVITY_NO_ANIMATION",Intent.FLAG_ACTIVITY_NO_ANIMATION),
        Pair("Intent.FLAG_ACTIVITY_CLEAR_TASK",Intent.FLAG_ACTIVITY_CLEAR_TASK),
        Pair("Intent.FLAG_ACTIVITY_TASK_ON_HOME",Intent.FLAG_ACTIVITY_TASK_ON_HOME),
        Pair("Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS",Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS),
        Pair("Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT",Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT),
        Pair("Intent.FLAG_ACTIVITY_REQUIRE_NON_BROWSER",Intent.FLAG_ACTIVITY_REQUIRE_NON_BROWSER),
        Pair("Intent.FLAG_ACTIVITY_REQUIRE_DEFAULT",Intent.FLAG_ACTIVITY_REQUIRE_DEFAULT),
        Pair("Intent.FLAG_RECEIVER_REGISTERED_ONLY",Intent.FLAG_RECEIVER_REGISTERED_ONLY),
        Pair("Intent.FLAG_RECEIVER_REPLACE_PENDING",Intent.FLAG_RECEIVER_REPLACE_PENDING),
        Pair("Intent.FLAG_RECEIVER_FOREGROUND",Intent.FLAG_RECEIVER_FOREGROUND),
        Pair("Intent.FLAG_RECEIVER_NO_ABORT",Intent.FLAG_RECEIVER_NO_ABORT),
        Pair("Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT (system)",67108864),
        Pair("Intent.FLAG_RECEIVER_BOOT_UPGRADE (system)",33554432), // Intent.FLAG_RECEIVER_BOOT_UPGRADE
        Pair("Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND (system)",16777216), // Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND
        Pair("Intent.FLAG_RECEIVER_EXCLUDE_BACKGROUND (system)",8388608), // Intent.FLAG_RECEIVER_EXCLUDE_BACKGROUND
        Pair("Intent.FLAG_RECEIVER_FROM_SHELL (system)",4194304), // Intent.FLAG_RECEIVER_FROM_SHELL
        Pair("Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS",Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS),
        Pair("Intent.FLAG_RECEIVER_OFFLOAD (system)", 2147483648.toInt()), // Intent.FLAG_RECEIVER_OFFLOAD
    )

    val matchFlags = mutableListOf<Pair<String, Int>>()
    flags.forEach {
        if ((flag and it.second) != 0) {
            matchFlags.add(it)
        }
    }

    var testFlag = 0
    var matchFlagsString = ""
    matchFlags.forEach {
        matchFlagsString += " " + it.first + "(" + it.second + ")"

        testFlag = it.second or testFlag
    }
    Log.i("TAG", "test flag: $testFlag")

    return matchFlagsString
}

Using

Log.i("TAG", "flag" + getIntent().flags)
Log.i("TAG", "extract flag" + getIntentFlag(getIntent().flags))
like image 56
Linh Avatar answered Dec 06 '25 03:12

Linh


If you have a reference to the activity, Then you can do something like:

Intent i=Activity.getIntent();

then,

i.getFlags()

will give you the flags associated with the activity.

See:

  • http://developer.android.com/reference/android/app/Activity.html#getIntent()
  • http://developer.android.com/reference/android/content/Intent.html#getFlags()
like image 36
Anup Cowkur Avatar answered Dec 06 '25 03:12

Anup Cowkur



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!