我想将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);
}
}
答案 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+)示例:
对于仍未使用API 23+(6.0)的用户,您仍然需要在清单中添加所有正在使用的权限。
请参阅:https://developer.android.com/guide/topics/permissions/overview#perm-groups以获取更多信息