当前位置:  开发笔记 > Android > 正文

如何在Android M中检查单个请求的多个权限?

如何解决《如何在AndroidM中检查单个请求的多个权限?》经验,为你挑选了4个好方法。

我想用

    android.permission.CAMERA

    android.permission.WRITE_EXTERNAL_STORAGE

在单个请求中使用

ActivityCompat.requestPermissions(Activity activity,new String permisionList[],int permissionRequestcode);

但我的问题是,我只是请求一个权限,我读了关于组权限,但它只适用于由开发人员,喜欢CONTACT_GROUP : read_contact,write_contact等决定的相同组.

我想创建自定义组权限,只向我询问一个请求并仅向我提供一个响应.

谢谢



1> Uncaught Exc..:

您可以在单个请求中询问多个权限(来自不同的组).为此,您需要将所有权限添加到您提供的字符串数组作为requestPermissions API的第一个参数,如下所示:

requestPermissions(new String[]{
                                Manifest.permission.READ_CONTACTS,
                                Manifest.permission.ACCESS_FINE_LOCATION},
                        ASK_MULTIPLE_PERMISSION_REQUEST_CODE);

执行此操作时,您将看到权限弹出窗口是多个权限弹出窗口的堆栈.当然,您需要处理每个权限的接受和拒绝(包括"永不再问")选项.同样经过精心解释了这里.


请完整阅读我的问题..我想在单个请求中检查所有权限..不是多个对话框.你的链接与我的问题无关...对不起..
不是答案.多个对话框是邪恶的.

2> mohit..:

首先初始化权限请求代码

public  static final int PERMISSIONS_MULTIPLE_REQUEST = 123;

检查android版本

 private void checkAndroidVersion() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        checkPermission();

    } else {
        // write your logic here
    }

}

检查多个权限代码

 private void checkPermission() {
    if (ContextCompat.checkSelfPermission(getActivity(),
            Manifest.permission.READ_EXTERNAL_STORAGE) + ContextCompat
            .checkSelfPermission(getActivity(),
                    Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED) {

        if (ActivityCompat.shouldShowRequestPermissionRationale
                (getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) ||
                ActivityCompat.shouldShowRequestPermissionRationale
                        (getActivity(), Manifest.permission.CAMERA)) {

      Snackbar.make(getActivity().findViewById(android.R.id.content),
                    "Please Grant Permissions to upload profile photo",
                    Snackbar.LENGTH_INDEFINITE).setAction("ENABLE",
                    new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            requestPermissions(
                                    new String[]{Manifest.permission
                                            .READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA},
                                    PERMISSIONS_MULTIPLE_REQUEST);
                        }
                    }).show();
        } else {
            requestPermissions(
                    new String[]{Manifest.permission
                            .READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA},
                    PERMISSIONS_MULTIPLE_REQUEST);
        }
    } else {
        // write your logic code if permission already granted
    }
}

用户授予权限后回调方法

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

    switch (requestCode) {
        case PERMISSIONS_MULTIPLE_REQUEST:
            if (grantResults.length > 0) {
               boolean cameraPermission = grantResults[1] == PackageManager.PERMISSION_GRANTED;
               boolean readExternalFile = grantResults[0] == PackageManager.PERMISSION_GRANTED;

                if(cameraPermission && readExternalFile)
                {
                    // write your logic here 
                } else {
                    Snackbar.make(getActivity().findViewById(android.R.id.content),
                        "Please Grant Permissions to upload profile photo",
                        Snackbar.LENGTH_INDEFINITE).setAction("ENABLE",
                        new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                requestPermissions(
                                        new String[]{Manifest.permission
                                                .READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA},
                                        PERMISSIONS_MULTIPLE_REQUEST);
                            }
                        }).show();
                }
           }
           break;
    }
}


依靠幻数(PERMISSION_GRANTED = 0)非常粗略.

3> Yvette Colom..:

在这个阶段没有黑客可以规避来自不同组的权限.这就是android如何开发运行时权限的本质,让用户可以选择接受哪些权限.当然不接受应用程序所需的所有权限,可能会使应用程序无法正常工作.

CAMERA和WRITE_EXTERNAL_STORAGE都被视为危险权限,并且在单独的组中,因此都需要运行时权限请求.

一旦为特定组授予了权限,就不需要在应用程序运行的生命周期内再次请求它,或者如果作为默认设置提供它,则不再需要它.

在此输入图像描述

在此输入图像描述

你唯一能做的就是要求用户接受默认的决定,可以通过使用"再也不要问"来撤销这些决定.

在此输入图像描述



4> IsaiahJ..:

我遇到了同样的问题,偶然发现了这个库.

基本上,您可以按顺序请求多个权限,此外,如果用户拒绝您的许可,您可以添加侦听器以弹出快餐栏.

dexter_sample

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有