Java 运行时未调用权限
我已经实现了权限Java 运行时未调用权限,java,android,android-permissions,Java,Android,Android Permissions,我已经实现了权限android.permission.CALL\u PHONE。问题是,在进行测试时,一旦权限被取消,就不会请求它 也就是说,如果我在运行时请求它,并且我说如果我想允许调用,它工作得很好,但是如果我说我不想允许调用,我就无法在下次打开应用程序时再次请求它 应用程序是否有办法再次请求许可?如果没有,是否有任何方法将用户发送到应用程序信息以从那里接受信息 谢谢。简短回答-如果用户拒绝并勾选“永不再问”,则不能再次请求权限 但您可以显示一些有意义的消息,并要求用户手动为您的应用程序启用
android.permission.CALL\u PHONE
。问题是,在进行测试时,一旦权限被取消,就不会请求它
也就是说,如果我在运行时请求它,并且我说如果我想允许调用,它工作得很好,但是如果我说我不想允许调用,我就无法在下次打开应用程序时再次请求它
应用程序是否有办法再次请求许可?如果没有,是否有任何方法将用户发送到应用程序信息以从那里接受信息
谢谢。简短回答-如果用户拒绝并勾选“永不再问”,则不能再次请求权限 但您可以显示一些有意义的消息,并要求用户手动为您的应用程序启用权限。此外,您可以在android设置下将用户重定向到应用程序权限页面 您可以使用
shouldshowRequestPermissionRegulation
检查用户是否已提前拒绝
您可以阅读有关权限的更多信息
我使用以下代码库来实现权限检查
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_PERMISSION) {
// Permission check if the user granted/denied them you may want to group the rationale in a single dialog
for (int i = 0, len = permissions.length; i < len; i++) {
String permission = permissions[i];
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
// denied the permission
boolean showRationale = shouldShowRequestPermissionRationale( permission );
if (! showRationale) {
// User ticked "never ask again"
// Show some meaningful message
} else if (Manifest.permission.WRITE_CONTACTS.equals(permission)) {
showRationale(permission, R.string.permission_denied_contacts);
// NOT ticked "never ask again"
} else if ( /* possibly check more permissions...*/ ) {
}
}
}
}
}
@覆盖
public void onRequestPermissionsResult(int-requestCode、字符串[]权限、int[]grantResults){
if(requestCode==请求权限){
//权限检查如果用户授予/拒绝权限,您可能希望在单个对话框中对基本原理进行分组
for(int i=0,len=permissions.length;i
可能重复/或相关问题:或此问题:这是一个重复的问题,但您可以使用共享首选项,并在每次启动应用程序且之前未授予权限时询问