允许请求允许在运行时不工作
我按照这个链接教程能够让请求允许在运行时:https://developer.android.com/training/permissions/requesting.html允许请求允许在运行时不工作
,它不工作,我复制相同的代码,但是有不同的权限“ACCESS_FINE_LOCATION “
我的代码作为活动
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);
}
}
的onCreate方法如下
,这是回调方法
@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
谁能告诉我什么是我的问题呢?
编辑当我改变了targetSdkVersion至23日在这两个清单和gradle这个文件,并运行我的应用程序它给了我下面的屏幕,当我按下允许,给了我黑色的屏幕长时间
,并且别做任何事
请问你能告诉我现在有什么问题吗?
在未来,请详细解释什么是“它不工作”的意思。
在这种情况下,我会猜测“它不工作”意味着“用户授予对话权限没有出现”。这是因为您的targetSdkVersion
设置为15
,而不是23
或更高。通过拥有targetSdkVersion
的15
,您的意思是您希望获得传统权限支持,即用户必须在安装时同意所有权限,包括具有dangerous
protectionLevel
的权限。
所以你建议我将targetSdkVersion更改为23? –
@AmiraElsayedIsmail:我不知道你为什么将它设置为15.如果你想让运行时权限工作,你需要将它提高到至少23.但是,你可能需要对代码进行其他更改一旦你这样做。您需要查看[VERSION_CODES'在16和23之间]的JavaDocs(https://developer.android.com/reference/android/os/Build.VERSION_CODES.html),以查看您可能需要修改的其他内容。 – CommonsWare
请检查我的编辑。 –
是的,我在Android 6.0.1版本的设备上运行 –