要在棉花糖中使用新的权限模型,您需要同时在清单中指定您的权限(与您一样)并在运行时请求权限。只有被视为“危险”的权限才需要运行时请求。危险的是定义为:
,将给予在可 负面影响用户设备中的请求的应用程序 进入私人用户数据或控制高风险的权限。由于此类权限引入潜在风险,系统可能不会自动将其授予请求应用程序的 。例如,应用程序所请求的任何危险许可 可能会显示给用户,并且在继续之前需要确认 确认,或者可能采取某些其他方法以避免用户自动允许使用此类设施。
来源: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 –