允许运行时的请求权限不起作用

时间:2016-07-31 12:42:51

标签: android android-6.0-marshmallow android-maps

我已遵循此链接中的教程,以便能够在运行时允许请求权限: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并运行我的应用程序时,它会给我以下屏幕,当我按下允许时,长时间给我黑屏,什么也不做

你能告诉我现在的问题吗?

enter image description here

1 个答案:

答案 0 :(得分:2)

将来,请详细说明“它不起作用”的含义。

在这种情况下,我猜测“它不起作用”意味着“用户授予权限的对话框没有出现”。这是因为您的targetSdkVersion设置为15,而不是23或更高。通过targetSdkVersion 15,您说您需要旧版权限支持,用户必须在安装时同意所有权限,包括dangerous {{ 1}}。