Android - 如何使用 PermissionsDispatcher 一次请求多个权限?

标签 android permissions

我知道如何一次请求多个权限。 例如:

final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124;

private void insertDummyContactWrapper() {
    List<String> permissionsNeeded = new ArrayList<String>();

    final List<String> permissionsList = new ArrayList<String>();
    if (!addPermission(permissionsList, Manifest.permission.ACCESS_FINE_LOCATION))
        permissionsNeeded.add("GPS");
    if (!addPermission(permissionsList, Manifest.permission.READ_CONTACTS))
        permissionsNeeded.add("Read Contacts");
    if (!addPermission(permissionsList, Manifest.permission.WRITE_CONTACTS))
        permissionsNeeded.add("Write Contacts");

    if (permissionsList.size() > 0) {
        if (permissionsNeeded.size() > 0) {
            // Need Rationale
            String message = "You need to grant access to " + permissionsNeeded.get(0);
            for (int i = 1; i < permissionsNeeded.size(); i++)
                message = message + ", " + permissionsNeeded.get(i);
            showMessageOKCancel(message,
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
                                    REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
                        }
                    });
            return;
        }
        requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
                REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
        return;
    }

    insertDummyContact();
}

private boolean addPermission(List<String> permissionsList, String permission) {
    if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
        permissionsList.add(permission);
        // Check for Rationale Option
        if (!shouldShowRequestPermissionRationale(permission))
            return false;
    }
    return true;
}

我如何用 PermissionsDispatcher 做到这一点?

最佳答案

很简单:

@NeedsPermission({Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.READ_CONTACTS,Manifest.permission.WRITE_CONTACTS})
void insertDummyContact(){...}

关于Android - 如何使用 PermissionsDispatcher 一次请求多个权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37658128/

相关文章:

android - Android 中的圆形 ImageView ,无需使用任何外部库

android - 如何正确地将库模块依赖项添加到 Flutter Plugin 的 Android 文件夹中?

apache - 如何使用 Require 指令来限制 apache 2.4 中的文件访问

linux - 本地灯服务器的权限

.net - 如何从网络驱动器获取在 Delphi 下运行的 .NET 程序集?

permissions - 在 ListAPIView 中仅查看所有者的数据

android - 在 Android 中设置从另一个线程或 BeginInvoke 可见的 TextView

Android JobInfo builder periodiy daily

android - 菜单项不可见

ios 权限/授权是如何工作的?