Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 即使Android上的权限被拒绝,应用程序也会将文件下载到存储中_Java_Android_Android Permissions_Android Download Manager - Fatal编程技术网

Java 即使Android上的权限被拒绝,应用程序也会将文件下载到存储中

Java 即使Android上的权限被拒绝,应用程序也会将文件下载到存储中,java,android,android-permissions,android-download-manager,Java,Android,Android Permissions,Android Download Manager,我正在构建一个Android应用程序,我有一个奇怪的错误,应用程序将视频下载到图库中,即使存储权限被拒绝。我已经阅读了文档,对此感到困惑。(与谷歌的文档一样) 它说这是一个危险的权限,所以它应该要求我允许它,但我不认为它允许(这可能只是我的记性不好),但无论如何,这是不允许的,但它仍然可以将视频下载到库中 但权限在AndroidManifest中 Minsdk版本为19,目标为29。 手机运行的是安卓10 <uses-permission android:name="andr

我正在构建一个Android应用程序,我有一个奇怪的错误,应用程序将视频下载到图库中,即使存储权限被拒绝。我已经阅读了文档,对此感到困惑。(与谷歌的文档一样)

它说这是一个
危险的
权限,所以它应该要求我允许它,但我不认为它允许(这可能只是我的记性不好),但无论如何,这是不允许的,但它仍然可以将视频下载到库中

但权限在AndroidManifest中

Minsdk版本为19,目标为29。 手机运行的是安卓10

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

您使用的设备上的Android版本是什么?您的应用程序没有下载并存储到文件中,但Downloadmanager会下载并存储到文件中。DownloadManager不需要权限。
direct.mkdir()您不必创建该目录,因为DownloadManager将为您创建该目录。此外,您应该检查返回值,因为它可能会失败<代码>如果(!direct.mkdir())返回
您应该告诉我们可以使用mkdirs()创建目录。但是也许你不能。这不是一个可能的安全问题吗?由于您可以使用DownloadManager下载存储在internet上的任何内容,因此您可能很容易下载恶意软件,不是吗?
 String filename = _filename + ".mp4";
            File direct =
                    new File(Environment
                            .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
                            .getAbsolutePath() + "/" + "MY_FOLDER" + "/");
            if (!direct.exists()) {
                direct.mkdir();
            }

   DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
            Uri downloadUri = Uri.parse(uri);
            DownloadManager.Request request = new DownloadManager.Request(downloadUri);
            request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
                    .setAllowedOverRoaming(false)
                    .setTitle(filename)
                    .setMimeType("video/mp4")
                    .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
                    .setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES,
                            File.separator + "MY_FOLDER" + File.separator + filename);
            dm.enqueue(request);