android6.0 动态权限申请

编程入门 行业动态 更新时间:2024-10-21 03:54:07

android6.0 动态<a href=https://www.elefans.com/category/jswz/34/1771295.html style=权限申请"/>

android6.0 动态权限申请

在项目中多次遇到权限申请的问题,随着6.0的越来越普遍,对权限的申请越来越严格,学会动态申请权限也变得十分重要了。
一:在需要用到权限的地方,比如应用的初始页,sd卡操作等,添加代码
例:询问获得读写sd卡的权限
首先要在配置文件中添加权限

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

在用到的地方添加代码

if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions((Activity) mContext, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},WRITE_EXTERNAL_STORAGE_REQUEST_CODE);}

在activity添加回调,类似OnActivityResult();

@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {//TODO 进行下一步操作}

多项权限申请,这个在使用腾讯地图的定位功能是遇到过,官方文档中给的方式为:

Android 6.0系统在原有的AndroidManifest.xml声明权限的基础上新增了运行时权限动态检测,定位等权限也包含在其中。如果您的应用程序设置了 targetSdkVersion ≥ 23,则需要在调用定位功能前进行权限检查,权限检查的示例代码如下:

if (Build.VERSION.SDK_INT >= 23) {String[] permissions = {Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE};if (checkSelfPermission(permissions[0]) != PackageManager.PERMISSION_GRANTED){requestPermissions(permissions, 0);}
}

用户选择允许或拒绝后,会回调onRequestPermissionsResult方法:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);//可在此继续其他操作。if(grantResults[0]==PackageManager.PERMISSION_GRANTED){}
}

更多推荐

android6.0 动态权限申请

本文发布于:2024-03-06 07:20:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1714718.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:权限   动态

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!