android 6.0 权限

android 6.0 安装app后,会自动提示用户是否允许app申请的权限。

如果用户拒绝了则在app中使用某些权限的时候会出现问题。 可怕的是不会报错,没有异常只是操作失败。。。

so so

我们需要在程序中必要的时候判断权限是否存在。

ok

在activity 中申请权限代码如下:


private static int REQUEST_PERMISSION_CODE = 0;

if(!Tools.isPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)){

    Log.d(T,"权限缺失");       Tools.requestRermission(this,REQUEST_PERMISSION_CODE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE);
        }

else{
    Log.d(T,"已经存在权限");
}




// 权限回调
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        showrocessResult(requestCode,permissions,grantResults);

        if (REQUEST_PERMISSION_CODE == requestCode){
            if(Tools.permissionsResultAnalysis(grantResults)){

                Log.d(T, "申请权限成功");
            } else {

                    Log.d(T, "申请权限失败..");
                REQUEST_PERMISSION_CODE++;
            }
        }

    }

//Tools.java  中的方法

//    获取应用是否有某项权限
    public static boolean isPermission(Context context, String permissionName)
    {

        PackageManager pm = context.getPackageManager();

        return (PackageManager.PERMISSION_GRANTED == pm.checkPermission(permissionName, context.getPackageName()));

    }

    public static void requestRermission(Activity context, int requestCode, String... permissionNames)
    {

        ActivityCompat.requestPermissions( context, permissionNames, requestCode);

    }

    public static boolean permissionsResultAnalysis(int[] grantResults){

        for(int grantResult : grantResults)
            if (grantResult != PackageManager.PERMISSION_GRANTED)
                return false;

        return true;
    }

亲测可用。可以在没有权限的时候弹出提示框,提示用户授权。

but …

小米系统的提示似乎有问题。 第一次是能提示的。之后再次申请权限不再提示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值