运行权限不工作

问题描述:

这是我的OnCreate代码()方法:运行权限不工作

if (ContextCompat.checkSelfPermission(thisActivity, 
      Manifest.permission.READ_CONTACTS) 
    != PackageManager.PERMISSION_GRANTED) { 

if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
     Manifest.permission.RECIEVE_SMS)) { 

} else { 

    ActivityCompat.requestPermissions(thisActivity, 
      new String[]{Manifest.permission.READ_CONTACTS},1); 
} 

在我onRequestPermissionsResult()方法:

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case 1: 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       init(); 
}else{ 
     finish(); 
} 

我的清单文件具有以下权限

<uses-permission android:name="android.permission.RECEIVE_SMS"/> 
<uses-permission android:name="android.permission.SEND_SMS"/> 
<uses-permission android:name="android.permission.READ_SMS"/> 

但我没有得到对话框要求的权限,我不知道这个问题?

+0

下设置 - >应用程序检查 - >(您的应用程序名称) - >权限,看看是否应用已获得授予的权限。 – Haem

如果您的应用定位的Android 6.0及以上的增加运行许可

在在Android 6.0(API级别23开始),用户在应用运行时为应用授予权限,而不是在他们安装应用时授予应用

用下面的代码READ_SMS

String permission = Manifest.permission.READ_SMS; 
int grant = ContextCompat.checkSelfPermission(this, permission); 
if (grant != PackageManager.PERMISSION_GRANTED) { 
    String[] permission_list = new String[1]; 
    permission_list[0] = permission; 
    ActivityCompat.requestPermissions(this, permission_list, 1); 
} 

,比10

附加运行时允许把手导致这样

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
             @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if (requestCode == 1) { 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      Toast.makeText(AccountClass.this,"permission granted", Toast.LENGTH_SHORT).show(); 
      // perform your action here 

     } else { 
      Toast.makeText(AccountClass.this,"permission not granted", Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 
+0

谢谢!它的工作原理..你能告诉我在我的代码中出了什么问题吗? –

+0

您要求提供** READ_CONTACTS **权限并且未在清单文件中添加此权限 –

尝试这种情况:

if (ActivityCompat.checkSelfPermission(AddnewPhotoActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) 
        != PackageManager.PERMISSION_GRANTED) { 

       ActivityCompat.requestPermissions(AddnewPhotoActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_READ_EXTERNAL_STORAGE); 

      } else { 

       isPermissionGranted(true); 
      } 

isPermissionGranted(布尔值); ====>方法调用

public void isPermissionGranted(boolean permission) { 
     if (permission) { 


      //Your Operation 


     } else { 

      Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show(); 
     } 
    } 

onRequestPermissionsResult

@Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

     if (requestCode == REQUEST_READ_EXTERNAL_STORAGE) { 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       isPermissionGranted(true); 

      } else 

      { 
       isPermissionGranted(false); 
      } 
     } 

    } 
+0

它仍然不显示要求许可的对话框?并且grantResults正在传递PERMISSION_DENIED –