我用于 阅读联系人 的权限,以便在清单中分配权限。我的问题是,我不是将sdk版本增加到23以向用户显示权限对话框(默认由android给出)并获取权限并通过它。在android sdk版本22中。
minSdkVersion = 16 targetSdkVersion = 22 compileSdkVersion = 27
I am using this code right now.
if (Build.VERSION.SDK_INT >= 23) {
if (checkPermission()) {
Log.e("permission", "Permission already granted.");
} else {
requestPermission();
}
}
private boolean checkPermission() {
int result = ContextCompat.checkSelfPermission(fragmentContext, android.Manifest.permission.READ_CONTACTS);
if (result == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
return false;
}
}
private void requestPermission() {
ActivityCompat.requestPermissions((Activity) fragmentContext, new String[]{android.Manifest.permission.READ_CONTACTS}, REQUEST_READ_CONTACTS);
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_READ_CONTACTS:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(fragmentContext,
"Permission accepted", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(fragmentContext,
"Permission denied", Toast.LENGTH_LONG).show();
}
break;
}
}
答案 0 :(得分:0)
在API 22及以下版本中,如果在中指定,则已授予权限 清单。
对于API 23+ ContextCompat#checkSelfPermission可能有用。它降低了#34;优雅地使用早期的API,如果它出现在清单中,它将告诉您授予的权限。在API 23及更高版本上,它实际上会检查它是否被授予。