我試圖測試特定於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