The classic answer for listing all specific permissions is to use a command pm list permissions. However, on Android 5.1 and the current preview version of Android 6.0, this command does not list everything.
For example, on a Nexus 4 running Android 5.1, I get the output as follows:
$ adb shell pm list permissions| fgrep WRITE_
permission:com.intsig.camscanner.WRITE_CAMSCANNER
permission:android.permission.WRITE_GSERVICES
permission:com.google.android.providers.gsf.permission.WRITE_GSERVICES
permission:com.android.voicemail.permission.READ_WRITE_ALL_VOICEMAIL
permission:com.android.launcher3.permission.WRITE_SETTINGS
permission:com.google.android.providers.settings.permission.WRITE_GSETTINGS
permission:com.android.chrome.permission.READ_WRITE_BOOKMARK_FOLDERS
WRITE_EXTERNAL_STORAGEnot displayed there. However, this permission has been around since Android 1.6 or so. Similar commands show that pm list permissionsthere is no READ_EXTERNAL_STORAGE, READ_CONTACTS, WRITE_CONTACTS, INTERNETand perhaps many others.
So, if it pm list permissionsdoes not give us a complete list of specific permissions on the device, is there another way to get this data?
PackageManager, getAllPermissions(), getAllPermissionGroups() , .
, , Android 6.0 , Android 6.0 AFAIK. , CHANGE_WIFI_STATE, BLUETOOTH, BLUETOOTH_ADMIN, NFC , dangerous. Android SDK, , Android 6.0. , , normal - . PackageManager , protectionLevel .