如何在Android的同一代码上设置两个权限

时间:2018-07-02 19:38:10

标签: java android permissions

我想将PHONE_CALLS和PROCESS_OUTGOING_CALLS权限设置为同一方法,因此,当用户首次打开应用程序时,请同时接受这两个权限。有可能的 ?阅读官方文档:https://google-developer-training.gitbooks.io/android-developer-phone-sms-course/content/Lesson%201/1_c_phone_calls.html对我来说不是很清楚。 请遵循代码:

public boolean isPermissionGranted() {
        if (Build.VERSION.SDK_INT >= 23) {
            if (checkSelfPermission(android.Manifest.permission.PROCESS_OUTGOING_CALLS)
                    == PackageManager.PERMISSION_GRANTED) {
                Log.v("TAG", "Permission is granted");
                return true;

            } else {

                Log.v("TAG", "Permission is revoked");
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.PROCESS_OUTGOING_CALLS}, 1);
                return false;
            }
        } else { //permission is automatically granted on sdk<23 upon installation
            Log.v("TAG", "Permission is granted");
            return true;
        }
    }

并且:

if (ContextCompat.checkSelfPermission(MainActivity.this,
            Manifest.permission.PROCESS_OUTGOING_CALLS)
            != PackageManager.PERMISSION_GRANTED) {


        if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
                Manifest.permission.PROCESS_OUTGOING_CALLS)) {


        } else {

            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.PROCESS_OUTGOING_CALLS},
                    MY_PERMISSIONS_REQUEST_CALL_PHONE);
        }
    }

2 个答案:

答案 0 :(得分:2)

您将请求的权限放置在字符串数组中,因此可以将两个权限都放在同一数组中,以逗号分隔

new String[]{permission1, permission2}

答案 1 :(得分:1)

您要请求的两个权限都属于同一权限组。您只需要授予一个权限即可访问该组的其余权限(在这种情况下:电话)。您无需同时请求两者,只需提示用户输入其中一个并继续即可。

这里是phone权限组中的所有权限:

READ_PHONE_STATE
READ_PHONE_NUMBERS
CALL_PHONE
ANSWER_PHONE_CALLS
READ_CALL_LOG
WRITE_CALL_LOG
ADD_VOICEMAIL
USE_SIP
PROCESS_OUTGOING_CALLS

无论您请求组中的哪个权限,用户都将以相同的方式看到它(如果它们使用的是API 23+)示例:

permissions

对于仍未使用API​​ 23+(6.0)的用户,您仍然需要在清单中添加所有正在使用的权限。

请参阅:https://developer.android.com/guide/topics/permissions/overview#perm-groups以获取更多信息