要在棉花糖中使用新的權限模型,您需要同時在清單中指定您的權限(與您一樣)並在運行時請求權限。只有被視爲「危險」的權限才需要運行時請求。危險的是定義爲:
,將給予在可 負面影響用戶設備中的請求的應用程序 進入私人用戶數據或控制高風險的權限。由於此類權限引入潛在風險,系統可能不會自動將其授予請求應用程序的 。例如,應用程序所請求的任何危險許可 可能會顯示給用戶,並且在繼續之前需要確認 確認,或者可能採取某些其他方法以避免用戶自動允許使用此類設施。
來源:https://developer.android.com/guide/topics/manifest/permission-element.html
這裏,如果你需要申請許可,檢查代碼的例子。 (請記住,即使用戶授予您的許可要求,他們以後可以撤銷它在應用程序設置,所以你需要在每次你需要它的時候檢查。)
private final int REQUEST_PERMISSION_ACCESS_FINE_LOCATION=1;
private void requestAccessLocationPermission() {
int permissionCheck = ContextCompat.checkSelfPermission(
this, Manifest.permission.ACCESS_FINE_LOCATION);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION)) {
showExplanation("Permission Needed", "Rationale", Manifest.permission.ACCESS_FINE_LOCATION, REQUEST_PERMISSION_ACCESS_FINE_LOCATION);
} else {
requestPermission(Manifest.permission.ACCESS_FINE_LOCATION, REQUEST_PERMISSION_ACCESS_FINE_LOCATION);
}
} else {
Toast.makeText(MainActivity.this, "Permission (already) Granted!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onRequestPermissionsResult(
int requestCode,
String permissions[],
int[] grantResults) {
switch (requestCode) {
case REQUEST_PERMISSION_ACCESS_FINE_LOCATION:
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this, "Permission Granted!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Permission Denied!", Toast.LENGTH_SHORT).show();
}
}
}
提供更多的細節......你應該手動啓用??? –
在應用程序設置是有權限的選項,我必須在那裏設置權限 –
這將幫助你。你可以檢查用戶是否選中了複選框'永不再問'http://manidesto.github.io/permissions-in-mahmahmallow –