Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行时未调用权限_Java_Android_Android Permissions - Fatal编程技术网

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
可能重复/或相关问题:或此问题:这是一个重复的问题,但您可以使用共享首选项,并在每次启动应用程序且之前未授予权限时询问