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 权限管理
分享URL:https://www.cdcxhl.com/article10/dsdisdo.html

成都网站建设公司_创新互联,为您提供品牌网站建设外贸建站移动网站建设虚拟主机微信公众号品牌网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站优化排名