安卓的权限大全和动态使用安卓权限
本文主要记录安卓权限和安卓动态权限及动态权限的使用方法
常用权限 |
||
访问网络 |
android.permission.INTERNET |
|
写入外部存储 |
android.permission.WRITE_EXTERNAL_STORAGE |
|
获取网络状态 |
android.permission.ACCESS_NETWORK_STATE |
|
拨打电话 |
android.permission.CALL_PHONE |
|
拍照权限 |
android.permission.CAMERA |
|
读取电话状态 |
android.permission.READ_PHONE_STATE |
|
读取短信内容 |
android.permission.READ_SMS |
|
写入联系人 |
android.permission.WRITE_CONTACTS |
|
设置屏幕方向 |
android.permission.SET_ORIENTATION |
|
其他权限 |
||
访问登记属性 |
android.permission.ACCESS_CHECKIN_PROPERTIES
|
|
获取精确位置 |
android.permission.ACCESS_FINE_LOCATION |
|
访问定位额外命令 |
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS |
|
获取模拟定位信息 |
android.permission.ACCESS_MOCK_LOCATION |
|
访问 |
android.permission.ACCESS_SURFACE_FLINGER |
|
获取WiFi状态 |
android.permission.ACCESS_WIFI_STATE |
|
账户管理 |
android.permission.ACCOUNT_MANAGER |
|
验证账户 |
android.permission.AUTHENTICATE_ACCOUNTS |
|
电量统计 |
android.permission.BATTERY_STATS |
|
绑定小插件 |
android.permission.BIND_APPWIDGET |
|
绑定设备管理 |
android.permission.BIND_DEVICE_ADMIN |
|
绑定输入法 |
android.permission.BIND_INPUT_METHOD |
|
绑定RemoteView |
android.permission.BIND_REMOTEVIEWS |
|
绑定壁纸 |
android.permission.BIND_WALLPAPER |
|
使用蓝牙 |
android.permission.BLUETOOTH |
|
蓝牙管理 |
android.permission.BLUETOOTH_ADMIN |
|
变成砖头 |
android.permission.BRICK |
|
应用删除时广播 |
android.permission.BROADCAST_PACKAGE_REMOVED |
|
收到短信时广播 |
android.permission.BROADCAST_SMS |
|
连续广播 |
android.permission.BROADCAST_STICKY |
|
WAP PUSH广播 |
android.permission.BROADCAST_WAP_PUSH |
|
通话权限 |
android.permission.CALL_PRIVILEGED |
|
改变组件状态 |
android.permission.CHANGE_COMPONENT_ENABLED_STATE |
|
改变配置 |
android.permission.CHANGE_CONFIGURATION |
|
改变网络状态 |
android.permission.CHANGE_NETWORK_STATE |
|
改变WiFi多播状态 |
android.permission.CHANGE_WIFI_MULTICAST_STATE |
|
改变WiFi状态 |
android.permission.CHANGE_WIFI_STATE |
|
清除应用缓存 |
android.permission.CLEAR_APP_CACHE |
|
清除用户数据 |
android.permission.CLEAR_APP_USER_DATA |
|
底层访问权限 |
android.permission.CWJ_GROUP |
|
手机优化大师扩展权限 |
android.permission.CELL_PHONE_MASTER_EX |
|
控制定位更新 |
android.permission.CONTROL_LOCATION_UPDATES |
|
删除缓存文件 |
android.permission.DELETE_CACHE_FILES |
|
删除应用 |
android.permission.DELETE_PACKAGES |
|
电源管理 |
android.permission.DEVICE_POWER |
|
应用诊断 |
android.permission.DIAGNOSTIC |
|
禁用键盘锁 |
android.permission.DISABLE_KEYGUARD |
|
转存系统信息 |
android.permission.DUMP |
|
状态栏控制 |
android.permission.EXPAND_STATUS_BAR |
|
工厂测试模式 |
android.permission.FACTORY_TEST |
|
使用闪光灯 |
android.permission.FLASHLIGHT |
|
强制后退 |
android.permission.FORCE_BACK |
|
访问账户Gmail列表 |
android.permission.GET_ACCOUNTS |
|
获取应用大小 |
android.permission.GET_PACKAGE_SIZE |
|
获取任务信息 |
android.permission.GET_TASKS |
|
允许全局搜索 |
android.permission.GLOBAL_SEARCH |
|
硬件测试 |
android.permission.HARDWARE_TEST |
|
注射事件 |
android.permission.INJECT_EVENTS |
|
安装定位提供 |
android.permission.INSTALL_LOCATION_PROVIDER |
|
安装应用程序 |
android.permission.INSTALL_PACKAGES |
|
内部系统窗口 |
android.permission.INTERNAL_SYSTEM_WINDOW |
|
结束后台进程 |
android.permission.KILL_BACKGROUND_PROCESSES |
|
管理账户 |
android.permission.MANAGE_ACCOUNTS |
|
管理程序引用 |
android.permission.MANAGE_APP_TOKENS |
|
高级权限 |
android.permission.MTWEAK_USER |
|
社区权限 |
android.permission.MTWEAK_FORUM |
|
软格式化 |
android.permission.MASTER_CLEAR |
|
修改声音设置 |
android.permission.MODIFY_AUDIO_SETTINGS |
|
修改电话状态 |
android.permission.MODIFY_PHONE_STATE |
|
格式化文件系统 |
android.permission.MOUNT_FORMAT_FILESYSTEMS |
|
挂载文件系统 |
android.permission.MOUNT_UNMOUNT_FILESYSTEMS |
|
允许NFC通讯 |
android.permission.NFC |
|
永久Activity |
android.permission.PERSISTENT_ACTIVITY |
|
处理拨出电话 |
android.permission.PROCESS_OUTGOING_CALLS |
|
读取日程提醒 |
android.permission.READ_CALENDAR |
|
读取联系人 |
android.permission.READ_CONTACTS |
|
屏幕截图 |
android.permission.READ_FRAME_BUFFER |
|
读取收藏夹和历史记录 |
com.android.browser.permission.READ_HISTORY_BOOKMARKS |
|
读取输入状态 |
android.permission.READ_INPUT_STATE |
|
读取系统日志 |
android.permission.READ_LOGS |
|
读取同步设置 |
android.permission.READ_SYNC_SETTINGS |
|
读取同步状态 |
android.permission.READ_SYNC_STATS |
|
重启设备 |
android.permission.REBOOT |
|
开机自动允许 |
android.permission.RECEIVE_BOOT_COMPLETED |
|
接收彩信 |
android.permission.RECEIVE_MMS |
|
接收短信 |
android.permission.RECEIVE_SMS |
|
接收Wap Push |
android.permission.RECEIVE_WAP_PUSH |
|
录音 |
android.permission.RECORD_AUDIO |
|
排序系统任务 |
android.permission.REORDER_TASKS |
|
结束系统任务 |
android.permission.RESTART_PACKAGES |
|
发送短信 |
android.permission.SEND_SMS |
|
设置Activity观察其 |
android.permission.SET_ACTIVITY_WATCHER |
|
设置闹铃提醒 |
com.android.alarm.permission.SET_ALARM |
|
设置总是退出 |
android.permission.SET_ALWAYS_FINISH |
|
设置动画缩放 |
android.permission.SET_ANIMATION_SCALE |
|
设置调试程序 |
android.permission.SET_DEBUG_APP |
|
设置应用参数 |
android.permission.SET_PREFERRED_APPLICATIONS |
|
设置进程限制 |
android.permission.SET_PROCESS_LIMIT |
|
设置系统时间 |
android.permission.SET_TIME |
|
设置系统时区 |
android.permission.SET_TIME_ZONE |
|
设置桌面壁纸 |
android.permission.SET_WALLPAPER |
|
设置壁纸建议 |
android.permission.SET_WALLPAPER_HINTS |
|
发送永久进程信号 |
android.permission.SIGNAL_PERSISTENT_PROCESSES |
|
状态栏控制 |
android.permission.STATUS_BAR |
|
访问订阅内容 |
android.permission.SUBSCRIBED_FEEDS_READ |
|
写入订阅内容 |
android.permission.SUBSCRIBED_FEEDS_WRITE |
|
显示系统窗口 |
android.permission.SYSTEM_ALERT_WINDOW |
|
更新设备状态 |
android.permission.UPDATE_DEVICE_STATS |
|
使用证书 |
android.permission.USE_CREDENTIALS |
|
使用SIP视频 |
android.permission.USE_SIP |
|
使用振动 |
android.permission.VIBRATE |
|
唤醒锁定 |
android.permission.WAKE_LOCK |
|
写入GPRS接入点设置 |
android.permission.WRITE_APN_SETTINGS |
|
写入日程提醒 |
android.permission.WRITE_CALENDAR |
|
写入Google地图数据 |
android.permission.WRITE_GSERVICES |
|
写入收藏夹和历史记录 |
com.android.browser.permission.WRITE_HISTORY_BOOKMARKS |
|
读写系统敏感设置 |
android.permission.WRITE_SECURE_SETTINGS |
|
读写系统设置 |
android.permission.WRITE_SETTINGS |
|
编写短信 |
android.permission.WRITE_SMS |
|
写入在线同步设置 |
android.permission.WRITE_SYNC_SETTINGS |
说明:
- Android 6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,然而大多数用户并不会注意到这些,直接就下一步了,应用安装成功后就会被赋予清单文件中的所有权限,应用就可以在用户不知情的情况下进行非法操作(比如偷偷的上传用户数据)。
- 安卓系统的权限管理机制从API 23 (也就是Android 6.0 又叫做 Android M,)之后发生了比较大的改变,在一些比较危险的权限上要求必须申请动态权限,即使你在AndroidMainfest.xml文件中申请也没有任何用,或者你可以将编译的目标版本设定这API 22,这样就可以了。
需要动态申请的权限如下:
- READ_CALENDAR , WRITE_CALENDAR 读写日历权限
- CAMERA 调用相机权限
- READ_CONTACTS , WRITE_CONTACTS , GET_ACCOUNTS 通讯录权限
- ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION 定位权限
- RECORD_AUDIO 录音权限
- READ_PHONE_STATE ,CALL_PHONE READ_CALL_LOG, WRITE_CALL_LOG ADD_VOICEMAIL//手机状态相关
- BODY_SENSORS 传感器权限
- SMS SEND_SMS ,RECEIVE_SMS ,READ_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMS SMS消息权限
10.READ_EXTERNAL_STORAGE ,WRITE_EXTERNAL_STORAGE 外部存储权限
动态申请权限步骤:
一、在AndroidMainfest.xml文件中申明权限
具体操作和安卓6.0以下的操作相同
二、判断安卓系统版本
安卓6.0以下,低于API23以下是不需要进行动态权限申请的,所以动态申请权限先进行版本判断
if (Build.VERSION.SDK_INT>=23) { //此处做动态权限申请 } else { //低于23 不需要特殊处理 }
三、检查权限
通过步骤二如果判断版本高于API23,则进行权限检查,检查当前应用中是否存在所需要的权限
//检测是否有写的权限
参数:上下文的context和权限的名称
返回两种情况:PERMISSION_GRANTED 存在权限以及PERMISSION_DENIED 不存在权限
int permission = ActivityCompat.checkSelfPermission(getApplicationContext(), "android.permission.WRITE_EXTERNAL_STORAGE"); //
四、进行权限申请
if (permission != PackageManager.PERMISSION_GRANTED) { // 没有写的权限,去申请写的权限,会弹出对话框,第一个参数是上下文,第二个参数是数组对象,第三个参数是唯一对应的请求码,请求码大小要介于0-65535之间 ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},1); }
完整代码
// 进行版本判断 if (Build.VERSION.SDK_INT >= 23) { // 进行动态申请 //检测是否有写的权限 int permission = ActivityCompat.checkSelfPermission(getApplicationContext(), "android.permission.WRITE_EXTERNAL_STORAGE"); // 没有写的权限,去申请写的权限,会弹出对话框 if (permission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, 1); } } else { // 不进行操作 } }