【发布时间】:2017-10-25 05:01:53
【问题描述】:
我在我的项目中实现了运行时权限,主要是 READ_PHONE_STATE、READ_CONTACTS、GET_ACCOUNTS。假设用户拒绝了 3 个中的 2 个,那么我必须显示有关每个拒绝权限的单个对话框消息。我该怎么做
代码:-
PermissionManager.with(this)
.key(2100)
.permission(PermissionEnum.READ_PHONE_STATE, PermissionEnum.READ_CONTACTS, PermissionEnum.GET_ACCOUNTS, PermissionEnum.READ_SMS, PermissionEnum.ACCESS_FINE_LOCATION, PermissionEnum.ACCESS_COARSE_LOCATION, PermissionEnum.WRITE_EXTERNAL_STORAGE, PermissionEnum.READ_EXTERNAL_STORAGE)
.askAgain(true)
.askAgainCallback(new AskAgainCallback() {
/*Callback to handle denied permission response*/
@Override
public void showRequestPermission(UserResponse response) {
showDialog(response);
}
})
.callback(new SmartCallback() {
/* To handle the result of permissions after all successful/ unsuccessful user transactions*/
@Override
public void result(boolean allPermissionsGranted, boolean somePermissionsDeniedForever) {
if (allPermissionsGranted) {
init();
} else {
finish();
}
}
})
.ask();
显示对话框:-
private void showDialog(final AskAgainCallback.UserResponse response) {
new AlertDialog.Builder(Splash.this)
.setTitle("Permission needed")
.setMessage("This app really need to use these permissions, do you want to authorize it?")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
response.result(true);
}
})
.setNegativeButton("NOT NOW", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
response.result(false);
finish();
}
})
.setCancelable(false)
.show();
}
但需要在对话框中为每个被拒绝的权限显示一条消息。
【问题讨论】:
-
您似乎正在使用库来管理权限。您应该询问 lib 的作者,因为他们将能够提供更好的帮助。
标签: android permissions runtime