Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android permissions: Phone Calls: read phone state and identity

Tags:

android

My android app has nothing to do with phone calls, but I'm seeing that when I install a debug build on my test device it requires "Phone Calls: read phone state and identity" permissions. (I make no mention of this in AndroidManifest.xml).

I'd like to have the minimum possible permissions, and wondered if anyone knew how to get rid of this? I commented out the part where I was logging some stuff from Build.MODEL, Build.VERSION.*, etc. I also commented out the part where I was detecting the landscape/portrait orientation thinking that that might be the "phone state". But neither of those seemed to remove that permission required.

I found this bug report: http://code.google.com/p/android/issues/detail?id=4101 but it's marked working-as-intended with a note about permissions being correct from the market but not otherwise. Is this other people's experience? (I'd hate to have to publish to the market just to test that out.) Otherwise, does anyone know if there's an API I can avoid calling that will make it so my app doesn't need this permission?

Thanks!

like image 364
Mike Kale Avatar asked Nov 17 '09 07:11

Mike Kale


People also ask

What does read phone status and identity mean?

Read phone status and identityAllows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs whether a call is active and the remote number connected by a call.

What is read phone state permission in Android?

Reading phone state (READ_PHONE_STATE) lets the app know your phone number, current cellular network information, the status of any ongoing calls and so on. Make calls (CALL_PHONE).

Why do Android apps need to read phone state and identity?

Its a permission that is being requested by an app for unique identification of your device. Allow it only of you are ok with it. As per Google, this permission is for getting the call status if it is active or not, current cellular network information and similar stuff. So, it depends on the type of app you're using.

What permissions does phone need on Android?

It's the “dangerous” permissions that Android requires your permission to use. These “dangerous” permissions include access to your calling history, private messages, location, camera, microphone, and more. These permissions are not inherently dangerous, but have the potential for misuse.


1 Answers

(Answering my own question in case anyone else runs into this problem and searches for it.)

Digging around in PackageParser.java in the android source, I found out that the system will automatically assign

android.permission.WRITE_EXTERNAL_STORAGE and  android.permission.READ_PHONE_STATE 

to any app that declares a targetSdk version of less than 4 (donut). There must be a compatibility reason for this, maybe apps targeting older versions could assume they had these permissions without declaring them explicitly. So, if you don't want these permissions added to your app implicitly, add a section like the following in AndroidManifest.xml

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="4" /> 

That is all.

Have fun, -Mike

like image 69
Mike Kale Avatar answered Oct 15 '22 05:10

Mike Kale