views:

468

answers:

1

I've been digging for awhile into the source of the Contacts app on Android to find out which Activity handles Intent.ACTION_CALL_PRIVILEGED. Unfortunately, I couldn't find its source code. Does anyone know how it's called, or even better where I can find it's source? Thank you!

+3  A: 

Oddly enough, the Phone application handles call-related events. ;)

You can watch ActivityManager output in logcat to see which component handles a particular Intent.

From the Contacts source code:

Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
    Uri.fromParts("tel", number, null));
startActivity(intent);

You can reproduce this Intent on the command line:
adb -e shell am start -a android.intent.action.CALL_PRIVILEGED -d tel:12345

Which results in the following (nicely-formatted) logcat output:

Starting activity: Intent { 
    act=android.intent.action.CALL_PRIVILEGED 
    dat=tel:12345
    flg=0x10000000
    cmp=com.android.phone/.PrivilegedOutgoingCallBroadcaster
}

This shows you that the com.android.phone application handles this particular Intent.

Christopher
Huh nice one! It seems that what I'm after is called OutgoingCallBroadcaster. :)
mobilekid
Great answer, thank you!
mobilekid
can you tell me in which SDK version you find Intent.ACTION_CALL_PRIVILEGED? I cannot find it, even with syntax doesn't show it. Only see Intent.ACTION_CALL (sdk 2.1). thanks
Mathias Lin
It's a hidden API constant (using the @hide annotation).
Christopher