1、动态权限
从Android6.0(API23)开始,对系统权限做了非常大的改变,6.0之前用户安装App的时候,只是把App需要的使用的权限统一列出来让用户看一下,App安装后都可以访问这些权限。从6.0开始,一些敏感权限需要在使用的时候动态申请,同时用户可以选择拒绝授权访问这些权利,已授予过的权限,用户也可以去设置界面去关闭授权。对于用户来说提高了安全性,可以防止一些应用恶意访问用户数据,但对开发来说,也增加了不少的工作量,这块不做适配处理的话,App在访问权限的时候容易出现崩溃。
2、权限主要分为normal、dangerous,即正常权限和危险权限。
正常权限
正常权限一般不涉及用户隐私,是无须用户进行授权的,比如手机振动、访问网络等,这些权限只需在AndroidManifest中简单声明就好,安装时就授权,无须每次使用时都检查权限,而且用户不能取消以上授权;
以下是正常权限:
android.permission.ACCESSLOCATIONEXTRACOMMANDS
android.permission.ACCESSNETWORKSTATE
android.permission.ACCESSNOTIFICATIONPOLICY
android.permission.ACCESSWIFISTATE
android.permission.ACCESSWIMAXSTATE
android.permission.BLUETOOTH
android.permission.BLUETOOTHADMIN
android.permission.BROADCASTSTICKY
android.permission.CHANGENETWORKSTATE
android.permission.CHANGEWIFIMULTICASTSTATE
android.permission.CHANGEWIFISTATE
android.permission.CHANGEWIMAXSTATE
android.permission.DISABLEKEYGUARD
android.permission.EXPANDSTATUSBAR
android.permission.FLASHLIGHT
android.permission.GETACCOUNTS
android.permission.GETPACKAGESIZE
android.permission.INTERNET
android.permission.KILLBACKGROUNDPROCESSES
android.permission.MODIFYAUDIOSETTINGS
android.permission.NFC
android.permission.READSYNCSETTINGS
android.permission.READSYNCSTATS
android.permission.RECEIVEBOOTCOMPLETED
android.permission.REORDERTASKS
android.permission.REQUESTINSTALLPACKAGES
android.permission.SETTIMEZONE
android.permission.SETWALLPAPER
android.permission.SETWALLPAPERHINTS
android.permission.SUBSCRIBEDFEEDSREAD
android.permission.TRANSMITIR
android.permission.USEFINGERPRINT
android.permission.VIBRATE
android.permission.WAKELOCK
android.permission.WRITESYNCSETTINGS
com.android.alarm.permission.SETALARM
com.android.launcher.permission.INSTALLSHORTCUT
com.android.launcher.permission.UNINSTALLSHORTCUT
危险权限
危险权限涵盖应用需要涉及用户隐私信息的数据或资源,或者可能对用户存储的数据或其他应用的操作产生影响的区域。例如读取用户联系人、读取Sdcard,在6.0以上系统中,需要在运行时明确向用户申请权限。
以下是Dangerous Permission,是以分组的形式给出的
group:android.permission-group.CONTACTS
permission:android.permission.WRITECONTACTS
permission:android.permission.GETACCOUNTS
permission:android.permission.READ_CONTACTS
group:android.permission-group.PHONE
permission:android.permission.READCALLLOG
permission:android.permission.READPHONESTATE
permission:android.permission.CALLPHONE
permission:android.permission.WRITECALLLOG
permission:android.permission.USESIP
permission:android.permission.PROCESS_OUTGOINGCALLS
permission:com.android.voicemail.permission.ADDVOICEMAIL
group:android.permission-group.CALENDAR
permission:android.permission.READCALENDAR
permission:android.permission.WRITECALENDAR
group:android.permission-group.CAMERA
permission:android.permission.CAMERA
group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
group:android.permission-group.LOCATION
permission:android.permission.ACCESSFINELOCATION
permission:android.permission.ACCESSCOARSELOCATION
group:android.permission-group.STORAGE
permission:android.permission.READEXTERNALSTORAGE
permission:android.permission.WRITEEXTERNALSTORAGE
group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
group:android.permission-group.SMS
permission:android.permission.READSMS
permission:android.permission.RECEIVEWAPPUSH
permission:android.permission.RECEIVEMMS
permission:android.permission.RECEIVESMS
permission:android.permission.SENDSMS
permission:android.permission.READCELLBROADCASTS
3、运行时请求权限
3.1、检查权限
应用每次需要危险权限时,都要判断应用目前是否有该权限。兼容库中已经做了封装,只需要通过下面代码即可:
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITECALENDAR);
如果有权限则返回PackageManager.PERMISSIONGRANTED,否则返回PackageManager。PERMISSION_DENIED。
3.2、请求权限
当应用需要某个权限时,可以申请获取权限,这时会有弹出一个系统标准Dialog提示申请权限,此Diolog不能定制,用户同意或者拒绝后会通过方法onRequestPermissionsResult()返回结果。 ActivityCompat.requestPermissions(thisActivity, new String[]{
Manifest.permission.READCONTACTS
},
REQUESTCODE);
3.3、处理权限请求响应
当用户处理权限请求后,系统会回调申请权限的Activity的onRequestPermissionsResult()方法,只需要覆盖此方法,就能获得返回结果。
@Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
}
从Android 6.0开始,敏感权限需要在使用时动态申请,用户可选择拒绝或关闭授权。权限分为normal和dangerous两类,dangerous权限涉及用户隐私,需运行时请求。检查权限、请求权限及处理响应是关键步骤。
4万+

被折叠的 条评论
为什么被折叠?



