Android开发技术 - - 动态权限.pptx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

本章教学目标Android权限历史;动态权限需求原因;需要动态申请的权限;动态权限申请步骤;AndroidMainfest.xml文件配置判断Android系统版本检查权限申请权限回调的处理

Android权限历史安卓系统的权限管理机制从API23(也就是Android6.0又叫做AndroidM,)之后发生了比较大的改变,在一些比较危险的权限上要求必须申请动态权限,即使在AndroidMainfest.xml文件中申请也没有任何用,或者可以将编译的目标版本设定这API22,这样就可以了。但这并不是长久之计。

动态权限需求原因Android6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,然而大多数用户并不会注意到这些,直接就下一步了,应用安装成功后就会被赋予清单文件中的所有权限,应用就可以在用户不知情的情况下进行非法操作(比如偷偷的上传用户数据)。

需要动态申请的权限READ_CALENDAR,WRITE_CALENDAR读写日历权限CAMERA调用相机权限READ_CONTACTS,WRITE_CONTACTS,GET_ACCOUNTS通讯录权限ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION定位权限RECORD_AUDIO录音权限

需要动态申请的权限READ_PHONE_STATE,CALL_PHONEREAD_CALL_LOG,WRITE_CALL_LOGADD_VOICEMAIL手机状态相关BODY_SENSORS传感器权限SMSSEND_SMS,RECEIVE_SMS,READ_SMS,RECEIVE_WAP_PUSH,RECEIVE_MMSSMS消息权限READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE外部存储权限

动态权限申请步骤AndroidMainfest.xml文件配置uses-permissionandroid:name=android.permission.ACCESS_MEDIA_LOCATION/

uses-permissionandroid:name=android.permission.READ_EXTERNAL_STORAGE/

uses-permissionandroid:name=android.permission.WRITE_EXTERNAL_STORAGE/

动态权限申请步骤判断Android系统版本在官方的文档中,低于API23是不需要使用动态权限申请的,如果是Android6.0以上的系统,需要进行判断if(Build.VERSION.SDK_INT=23){

//此处做动态权限申请

}

else{

//低于23不需要特殊处理

}

动态权限申请步骤检查权限如果版本高于23,则需要检查一下有没有权限

使用ContextCompat.CheckSelfPermission参数:一个上下文Context和一个权限的名称。返回:PERMISSION_GRANTED存在权限以及PERMISSION_DENIED不存在权限申请权限如果发现CheckSelfPermission返回值是PERMISSION_DENIED,则需要使用ContextCompat.requestPermission进行权限申请ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.READ_CONTACTS},REQUEST_CODE);

动态权限申请步骤申请权限参数说明:当前上下文。一个权限数组,还有一个唯一的请求码,注意这个请求码要大于0,低于65535,因为程序要求请求码只能是16位的数据。权限数组是可以一次申请多个权限的,由于这个权限请求是异步操作的,所以说,用户判断权限后需要回调函数,那么就用到这个请求码了if(Build.VERSION.SDK_INT=23){

if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)==PackageManager.PERMISSION_GRANTED){

try{

writeFile();

}catch(IOExceptione){

e.printStackTrace();

}

}else{

requestPermissions(newSt

您可能关注的文档

文档评论(0)

于鲲鹏 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档