android权限申请,android 权限管理

Android6.0动态权限申请步骤以及需要注意的一些坑

我的博客

为沧州等地区用户提供了全套网页设计制作服务,及沧州网站建设行业解决方案。主营业务为做网站、网站制作、沧州网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

我的博客:Android6.0动态权限申请步骤以及需要注意的一些坑

因为工作需要,简单研究了一下Android6.0权限申请,在Google提供的sample的基础上,写了一个简单的demo。算是自己的笔记吧,可能会比较混乱,主要是方便以后查看。后期有别的问题,随时更新~

(1)checkSelfPermission:检查是否拥有这个权限

(2)requestPermissions:请求权限,一般会弹出一个系统对话框,询问用户是否开启这个权限。

(3)shouldShowRequestPermissionRationale:在允许询问时返回true ; 在权限通过 或者权限被拒绝并且禁止询问时返回false ,如果从来没有询问过,也是返回的false, 所以单纯的使用shouldShowRequestPermissionRationale去做什么判断,是没用的。。。 所以说这个地方有坑,我的解决方法是,在回调里面处理,如果用户拒绝了这个权限,则打开本应用信息界面,由用户自己手动开启这个权限。

(4)每个应用都有自己的权限管理界面,里面有本应用申请的权限以及各种状态,即使用户已经同意了你申请的权限,他也随时可以关闭

其实和申请一个权限是一样的,只是requestPermissions(final @NonNull Activity activity,

final @NonNull String[] permissions, final int requestCode),里面的permissions给的参数多些而已。

Android动态申请权限

1、在Android 6.0之后,APP获取手机的权限不再仅仅只是在清单文件中声明就行了,它将手机的权限分为了两类:正常权限和危险权限:

2、动态申请权限涉及到的方法:

3、例子:申请获取用户位置信息(危险权限)

4、权限清单:

Android申请权限,拒绝、永久拒绝

例如

申请定位权限:

if (Build.VERSION.SDK_INT =M !hasPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)) {

String[] permissions =new String[1];

permissions[0] = Manifest.permission.ACCESS_COARSE_LOCATION;

Log.e("TAG", "onRequestPermissionsResult 申请权限");

//申请权限

ActivityCompat.requestPermissions(this,       permissions,MY_LBS_PERMISSION_REQUEST_CODE);

}

//处理权限请求

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

if (requestCode ==MY_LBS_PERMISSION_REQUEST_CODE) {

boolean isAllGranted =true;

    for (int grant : grantResults) {

if (grant != PackageManager.PERMISSION_GRANTED) {

isAllGranted =false;

break;

        }

}

if (isAllGranted) {

Log.e("TAG", "onRequestPermissionsResult 同意");

    }else {

List notAsk =new ArrayList();

        for (String permission : permissions) {

Log.e("TAG", "onRequestPermissionsResult - 循环 -");

            if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permission)

ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {

notAsk.add(permission);

            }

}

if (notAsk.size() 0) {//拒绝不再提醒

            Log.e("TAG", "onRequestPermissionsResult 拒绝不再提醒");

        }else {

             Log.e("TAG", "onRequestPermissionsResult 本次拒绝");

        }

}

}

}

/**

* 检查是否有某个权限

* @param context    context

* @param permission 权限

* @return true means has

*/

public static boolean hasPermission(Context context, String permission) {

return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;

}


网站名称:android权限申请,android 权限管理
分享链接:http://myzitong.com/article/dsdisdo.html