当前位置: 首页 > 知识库问答 >
问题:

Android 6.0多个权限

濮阳景天
2023-03-14
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
    PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this,
        new String[] { 
            Manifest.permission.WRITE_EXTERNAL_STORAGE
        }, PERMISSION_WRITE_STORAGE);
}

示例(忘记了google应用程序的名称:()
应用程序需要短信、联系人和摄像头

应用程序要求我激活短信,激活联系人,然后再激活相机(并做了一个对话框1-3页)。所以这个谷歌应用程序调用了所有三个必需的权限,我的问题是我如何才能实现相同的?

共有1个答案

苏嘉志
2023-03-14

只需在activitycompat.requestpermissions(...)调用中包含所有4个权限,Android就会像您提到的那样自动将它们分页到一起。

我有一个helper方法来检查多个权限,看看是否有任何一个权限没有被授予。

public static boolean hasPermissions(Context context, String... permissions) {
    if (context != null && permissions != null) {
        for (String permission : permissions) {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
    }
    return true;
}

或在Kotlin:

fun hasPermissions(context: Context, vararg permissions: String): Boolean = permissions.all {
    ActivityCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
}
// The request code used in ActivityCompat.requestPermissions()
// and returned in the Activity's onRequestPermissionsResult()
int PERMISSION_ALL = 1; 
String[] PERMISSIONS = {
  android.Manifest.permission.READ_CONTACTS, 
  android.Manifest.permission.WRITE_CONTACTS, 
  android.Manifest.permission.WRITE_EXTERNAL_STORAGE, 
  android.Manifest.permission.READ_SMS, 
  android.Manifest.permission.CAMERA
};

if (!hasPermissions(this, PERMISSIONS)) {
    ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}
 类似资料:
  • 本文向大家介绍详解Android6.0运行时权限管理,包括了详解Android6.0运行时权限管理的使用技巧和注意事项,需要的朋友参考一下 自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验,不会再强迫用户因拒绝不该拥有的权限而导致的无法安装的事情,也不会再不征求用户授权的情况下,就可以任意的访问用户

  • 本文向大家介绍android6.0运行时权限完美封装方法,包括了android6.0运行时权限完美封装方法的使用技巧和注意事项,需要的朋友参考一下 前几天看了郭大神的运行时权限的专讲,深受启发,由于现在基于目前项目中的运行时权限封装的还不是那么完美,趁着郭神建议的还是历历在目。于是把它完整的敲了下来。并在此基础上添加上自己的一些见解,封装成一个完整的demo,希望与大家进行交流与。 在这里我进行了

  • 本文向大家介绍android6.0权限动态申请框架permissiondispatcher的方法,包括了android6.0权限动态申请框架permissiondispatcher的方法的使用技巧和注意事项,需要的朋友参考一下 1,添加依赖 在project的build.gradle文件中添加 在module的build.gradle中添加 2,添加注解 注释说明 RuntimePermissio

  • 本文向大家介绍Android6.0动态申请权限所遇到的问题小结,包括了Android6.0动态申请权限所遇到的问题小结的使用技巧和注意事项,需要的朋友参考一下 白天在做SDK23版本的适配,遇到了不少坑,现在抽空记下来,以此为戒。 首先要知道哪些坑,就得先了解一些定义和基本使用方式。 那么先介绍一下动态申请的权限分组情况。 下面的权限组是由谷歌官方定义的,目的是在申请权限时,只要用户允许同一权限组

  • 我正在实施应用程序权限流以使用地理位置。我通过片段中的requestPermissions()请求了ACCESS\u FINE\u LOCATION和ACCESS\u rough\u LOCATION。 我在片段中收到了onRequestPermissionsResult()的请求权限结果。 但奇怪的是,onRequestPermissionsResult()只收到了一个权限,即第二个参数中的AC