SecurityException:Permission Denial ACCESS_ALL_DOWNLOADS

时间:2017-11-18 00:27:32

标签: java android

我正在尝试使用DownloadManager下载文件。是的我知道人们已经犯了这个错误。但我的似乎没有得到解决。我每次都试过。

我已经删除了这个权限:

<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

我的代码

public void startDownload(String str) {
    try {
        MarshmellowPermissions permissions = new MarshmellowPermissions(context);
        permissions.checkWriteExternalStoragePermission();
        DownloadManager mManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
        DownloadManager.Request mRqRequest = new DownloadManager.Request(Uri.parse(str));
        mRqRequest.setDescription("This is Test File");
        long idDownLoad = mManager.enqueue(mRqRequest);
        mManager.remove(idDownLoad);
        try {
            mManager.openDownloadedFile(idDownLoad);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

我在这一行收到错误

mManager.openDownloadedFile(idDownLoad);

这是错误日志:

java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadProvider uri content://downloads/all_downloads/15 from pid=3926, uid=10086 requires android.permission.ACCESS_ALL_DOWNLOADS, or grantUriPermission()

1 个答案:

答案 0 :(得分:0)

看起来还没有人对此有一个答案,我已经解决了这个问题,并希望分享我的解决方法。所以基本上它没有用,因为我没有在运行时请求权限。

我所做的是询问运行时的权限。在下面使用此代码。

ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);