我已遵循此链接中的教程,以便能够在运行时允许请求权限:https://developer.android.com/training/permissions/requesting.html
并且无效,我复制了相同的代码但具有不同的权限" ACCESS_FINE_LOCATION"
我的代码如下
on onCreate活动方法
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION)) {
DialogUtils.showDialogMessage(this, getString(R.string.error),
getString(R.string.error_location_permission_not_granted), getString(R.string.ok), getString(R.string.cancel), new OnClickListener() {
@Override
public void onClick(View view) {
/*ContextCompat.requestPermissions(ItemDetailsActivity2.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MAP_PERMISSION_REQUEST_CODE);*/
}
}, null);
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MAP_PERMISSION_REQUEST_CODE);
}
}
这是回调方法
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case MAP_PERMISSION_REQUEST_CODE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
initalizeMap();
} else {
DialogUtils.showDialogMessage(this, getString(R.string.error), getString(R.string.error_location_permission_not_granted), getString(R.string.ok), null);
}
return;
}
}
}
这是我的构建配置
compileSdkVersion 23
buildToolsVersion '23.0.3'
minSdkVersion 15
targetSdkVersion 15
任何人都可以告诉我我出了什么问题吗?
修改
当我在清单和gradle文件中将targetSdkVersion更改为23并运行我的应用程序时,它会给我以下屏幕,当我按下允许时,长时间给我黑屏,什么也不做
你能告诉我现在的问题吗?答案 0 :(得分:2)
将来,请详细说明“它不起作用”的含义。
在这种情况下,我猜测“它不起作用”意味着“用户授予权限的对话框没有出现”。这是因为您的targetSdkVersion
设置为15
,而不是23
或更高。通过targetSdkVersion
15
,您说您需要旧版权限支持,用户必须在安装时同意所有权限,包括dangerous
{{ 1}}。