我试图测试特定于Android sdk> 23的运行时权限。但是我的应用程序被自动授予权限而不询问。Android授予我的应用程序运行时权限,而不询问
注意:我正在使用sdk 版本24。下面是一个代码片段我使用:
public void onCalendarClick(View view) {
if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) == PackageManager
.PERMISSION_DENIED) {
if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.WRITE_CALENDAR)) {
//Display Explanation to the user
//For granting permissions to the app.
}
else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_CALENDAR}, CALLBACK_CALENDAR);
}
}
}
@Override
public void onRequestPermissionsResult(int resultCode, String permission[], int grantResults[]) {
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast toast;
switch (resultCode) {
case CALLBACK_CALENDAR : toast = Toast.makeText(this,"Calendar Permission Granted!!",Toast.LENGTH_LONG);
toast.show(); break;
//Other Cases
}
}
}
当我点击Calendar Button
,该onCalendarClick()
方法运行,但不要求任何许可,应用程序直接显示日历权限授予!toast
。在应用程序的设置中,虽然有正在显示没有权限授予/请求。
我错过了什么或者做错了什么?谢谢你的帮助。
你问如果requestCode是日历,但无法若真的授予,你应该在许可[]和grantResults []值检查知道它是否被授予。 –
如果我没有错,那么我认为在'onRequestPermissionsResult(...)'方法中有'if条件'检查权限是否被授予。 @JonathanAste – Robin
你的'targetSdkVersion'是什么? – CommonsWare