在 Android 系统中存在一个叫做「appops」的系统服务,该服务定义了一系列的「应用操作」。其中部分「应用操作」与「权限」对应(如 OP_CAMERA 与相机权限)。原生 Android 系统使用「appops」来追踪权限使用,「appops」也部分被用于权限控制。每个应用都有自己的「appops」设置,当应用需要执行某些操作时,系统在检查权限的同时也会检查「appops」设置。与我们现在看到的「允许」和「禁止」不同,实际上「appops」中还有一个「忽略」选项,当权限设置为「忽略」时,应用将无法获取权限,依然能够正常运行。
Android中有很多权限,正常权限(Normal permissions),危险权限(Dangerous permissions),签名权限(Signature permissions)系统会在应用安装时自动授予应用签名权限,但是这有个前提,那就是申请使用权限的应用与定义许可的应用签名相同等。
安卓系统常用的权限有以下所示:
ACCESS_NETWORK_STATE
允许应用程序获取网络状态信息的权限
ACCESS_WIFI_STATE
允许应用程序获取wi-fi网络状态信息的权限
BATTERY_STATE
允许应用程序获取电池状态信息的权限
BLUETOOTH
允许应用程序连接匹配的蓝牙设备的权限
BLUETOOTH_ADMIN
允许应用程序发现匹配的蓝牙设备的权限
BROADCAST_SMS
允许应用程序广播收到的提醒的权限
CALL_PHONE
允许应用程序拨打电话的权限
CAMERA
允许应用程序使用相机的权限
CHANGE_NETWORK_STATE
允许应用程序改变网络连接状态的权限
CHANGE_WIFI_STATE
允许应用程序改变WIFI网络连接状态的权限
DELETE_CACHE_FILES
允许应用程序删除缓存文件的权限
DELETE_PACKAGES
允许应用程序删除安装包的权限
FLASHLIGHT
允许应用程序访问闪光灯的权限
INTERNET
允许应用程序打开网络Socket的权限
MODIFY_AUDIO_SETTINGS
允许应用程序修改全局声音设置的权限
PROCESS_OUTGOING_CALLS
允许应用程序监听、控制、取消呼出电话的权限
READ_CONTACTS
允许应用程序读取用户的联系人数据的权限
READ_HISTORY_BOOKMARKS
允许应用程序读取历史书签的权限
READ_OWENNER_DATA
允许应用程序读取用户书签的权限
READ_PHONE_STATE
允许应用程序读取电话状态的权限
READ_PHONE_SMS
允许应用程序读取短信的权限
REBOOT
允许应用程序重启系统的权限
RECEIVE_MMS
允许应用程序接受、监控、处理彩信的权限
RECEIVE_SMS
允许应用程序接受、监控、处理短信的权限
RECORD_AUDIO
允许应用程序录音的权限
SEND_SMS
允许应用程序发送短信的权限
SET_ORIENTATION
允许应用程序旋转屏幕的权限
SET_TIME
允许应用程序设置时间的权限
SET_TIME_ZONE
允许应用程序设置时区的权限
SET_WALLPAPER
允许应用程序设置桌面壁纸的权限
VIBRATA
允许应用程序控制振动器的权限
WRITE_CONTACTS
允许应用程序写入用户联系人的权限
WRITE_HISTORY_BOOKMARKS
允许应用程序写历史书签的权限
WRITE_OWNNER_DATA
允许应用程序写用户数据的权限
WRITE_SMS
允许应用程序写短信的权限