我是android的新手。我想在获得许可后打开联系人。我的问题是一开始我需要点击按钮拖动时间,一个用于获得许可,一个用于打开联系人。
有没有办法在获得许可后立即打开联系人而无需第二次点击
答案 0 :(得分:1)
是的,您可以像这样处理请求权限结果
1.具有按钮点击事件的权限
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String permission = android.Manifest.permission.READ_CONTACTS;
if (ActivityCompat.checkSelfPermission(SearchCityClass.this, permission)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(SearchCityClass.this, new String[]
{permission}, PERMISSION_CODE);
} else {
isPermissionGranted(true);
}
}
});
<强> 2。处理onRequestPermissionsResult
中的权限结果@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
isPermissionGranted(true);
} else {
isPermissionGranted(false);
}
}
}
3.现在为此创建一个方法
public void isPermissionGranted(boolean permission) {
if (!permission) {
// permission not granted
} else {
// add here your code beacuse permisiion is granted
}
答案 1 :(得分:0)
当您尝试获得许可时,您可以调用一个函数并告诉您的要求。 (只有获得许可才能获得危险许可) 在此之后,当用户接受或拒绝时,它会进入 onRequestPermissionsResult 。
在此方法中,您可以检查您是否获得了许可,然后执行您的操作。
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
if (Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
//do your action
}
希望能帮到你