android获取权限


前言

android应用运行过程中某些功能的使用需要通过权限管理器申请相应权限,应用才可以正常使用该功能。比如相机权限、存储权限、内存访问权限、网络权限。

在android6.0(sdk23)之前,安卓的权限申请是静态申请权限,android6.0之后权限申请需要变成动态申请权限。


一、静态权限申请

android6.0之前开发者开发应用时希望应用拥有手机的什么权限,只需要在应用的注册清单(AndroidManifest.xml)的manifest节点上注册,程序就可以正常使用相应功能。具体如下示例:

    //相机权限
    <uses-permission android:name="android.permission.CAMERA" />
    //写存储权限
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    //读存储权限
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

二、动态申请权限

安卓6.0之后应用想要获取权限,需要在静态权限注册的前提下在代码中开启动态权限申请供用户选择开启还是禁止相应权限。如下示例

1.静态注册权限

    //相机权限
    <uses-permission android:name="android.permission.CAMERA" />
    //写存储权限
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    //读存储权限
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

2.提示用户是否赋予权限

程序运行过程中,开发者定义好程序需要使用到的权限,判断是否已经拥有该权限,提示用户同意赋予权限。


   //定义需要的权限列表
   String[] permissions = new String[]{
   
            Manifest.permission.CAMERA,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };



    /**
     * 申请权限
     */
    private void checkPermissions(){
   
        //如果系统大于android6.0,进行动态权限申请
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
   
            int i = ContextCompat.checkSelfPermission(this, permissions[0]);
            int l = ContextCompat.checkSelfPermission(this, permissions[1]);
            int m = ContextCompat.checkSelfPermission(this, permissions[2]);
            // 权限是否已经 授权 GRANTED---授权  DINIED---拒绝,判断需要的权限列表中是否有权限还没拥
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值