Android开发技术 - - 动态权限_第1页
Android开发技术 - - 动态权限_第2页
Android开发技术 - - 动态权限_第3页
Android开发技术 - - 动态权限_第4页
Android开发技术 - - 动态权限_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章教学目标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(newString[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},666);

}

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

publicvoidonRequestPermissionsResult(intrequestCode,@NonNullString[]permissions,@NonNullint[]grantResults){

super.onRequestPermissionsResult(requestCode,permissions,grantResults);

if(requestCode==666){

if(grantResults[0]==PackageManager.PERMISSION_GRANTED){

Log.i("PERMISSION","写文件权限已授予");

try{

writeFile();

}catch(IOExceptione){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论