The permission READ_PHONE_STATE
has to be accepted by users, ACCESS_WIFI_STATE
doesn't.
Somebody asked already about the link between Android Permissions and Permission Groups - the selected answer links to the actual mapping file for the permissions of Android.
So the permissions you mentioned are belonging into the following groups and protection levels:
INTERNET
: NETWORK (dangerous)
ACCESS_NETWORK_STATE
: NETWORK (normal)
ACCESS_WIFI_STATE
: NETWORK (normal)
READ_PHONE_STATE
: PHONE_CALLS (dangerous)
Based on Google's explanation about the protectionLevel
, "special permissions" (as you call it) are permissions marked as "dangerous" (as Google calls it).
But hey, INTERNET
is dangerous! Why aren't users asked about this permission? Because.
Google has also given each app Internet access, effectively removing
the Internet access permission. Oh, sure, Android developers still
have to declare they want Internet access when putting together the
app. But users can no longer see the Internet access permission when
installing an app and current apps that don’t have Internet access can
now gain Internet access with an automatic update without prompting
you.