目录

Android Permissions

Permissions(还在写)

对于Permission, 我们做Android开发用的很频繁, 但是我写这篇文章之前我其实一直对什么情况下究竟应该请求什么权限只能靠猜, 我需要系统总结! 于是有了这篇文章

权限简介

建议: Manifest.permission | Android Developers (google.cn)

毕竟我下面写的肯定是有时效性的, 建议去看看官网

权限作为应用开发者我们只需要了解正常权限和危险权限, 正常权限只需要我们在debug时遇到错误或者IDE标黄提示的时候添加进去就完事了(但往往国内各种定制ROM还会有自己的特殊限制, 如MIUI中对剪切板读写权限的限制), 而我们重点需要了解下方的主要的危险权限:

危险权限组 权限
CALENDAR 日历 READ_CALENDAR
WRITE_CALENDAR
CAMERA 摄像头 CAMERA
CONTACTS 联系人 READ_CONTACTS
WRITE_CONTACTS
GET_ACCOUNTS
LOCATION 位置 ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
MICROPHONE 麦克风 RECORD_AUDIO
PHONE 手机状态 READ_PHONE_STATE
CALL_PHONE
READ_CALL_LOG
WRITE_CALL_LOG
SENSORS 传感器 BODY_SENSORS
SMS 短信 SEND_SMS
RECEIVE_SMS
READ_SMS
RECEIVE_WAP_PUSH
RECEIVE_MMS
STORAGE 储存 READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE

Android 6.0(SDK23)及之后的Android版本, 开发者需要手动请求这些权限, 且只要权限组中任意一个权限取得, 则整个权限组的权限均会获得.

合理使用

事实上在很多情况下, 我们都不应该请求任何危险权限. 而应该使用intent唤醒具有权限的应用(如系统自带应用)来执行操作

功能 Intent
拍摄照片 ACTION_IMAGE_CAPTURE
录制视频 ACTION_VIDEO_CAPTURE
打开其他应用的媒体或文档 ACTION_CREATE_DOCUMENT
ACTION_OPEN_DOCUMENT
ACTION_OPEN_DOCUMENT_TREE

而上面的这些其实也是不必要的, Activity Results API可以帮助我们高效简单的完成这些操作. 详见:Activity Results 总结和封装 - 可爱怪的窝