未显示WRITE_EXTERNAL_STORAGE的权限对话框

Sel*_*lin 0 permissions android

在此处输入图片说明我想使用下载文件DownloadManager。并DownloadManager希望获得WRITE_EXTERNAL_STORAGE许可。我已将WRITE_EXTERNAL_STORAGE许可包含在中AndroidManifest.xml。此外,我尝试在运行时获得此许可。

请求权限后立即调用onRequestPermissionsResult回调。没有显示请求权限弹出窗口。

然而,对价值grantResult[0]onRequestPermissionsResultPERMISSION_DENIED。但是,甚至没有显示“权限弹出窗口”。

我检查这样的许可:

public  boolean isStoragePermissionGranted() {
    if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(getContext(), android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_GRANTED) {
            Log.v(TAG,"Permission is granted");
            return true;
        } else {

            Log.v(TAG,"Permission is revoked");
            ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_PERMISSION_REQUEST_CODE);
            return false;
        }
    }
    else {
        Log.v(TAG,"Permission is granted");
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是权限请求的回调:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
        case WRITE_EXTERNAL_PERMISSION_REQUEST_CODE: {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                downloadFile();
            }
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试获得READ_EXTERNAL_STORAGE许可时,我可以获取该许可,但对WRITE_EXTERNAL_STORAGE许可无效。

另外,我尝试了 @MetaSnarf的解决方案。但是什么都没有改变。

您对这种情况有任何想法吗?

mer*_*sek 5

您的依赖项之一可能导致该问题。您可以替换清单中的权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="replace" />
Run Code Online (Sandbox Code Playgroud)