Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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
Android 安卓下载管理器“;下载不成功“;_Android_Android Download Manager - Fatal编程技术网

Android 安卓下载管理器“;下载不成功“;

Android 安卓下载管理器“;下载不成功“;,android,android-download-manager,Android,Android Download Manager,这是我第一次尝试实现DownloadManager,无论我尝试了什么,我总是会收到一条通知,上面写着“下载不成功”。我看过许多其他SO论坛,一些教程,以及我所拥有的应该有用的东西。是的,我已经在清单文件中设置了internet和外部存储权限。是的,我已经在手机的应用程序设置中授予了存储权限。我在运行API 28的Android模拟器和运行相同API的真实手机上都试过。以下是我的代码: String url = "http://commondatastorage.googleapi

这是我第一次尝试实现
DownloadManager
,无论我尝试了什么,我总是会收到一条通知,上面写着“下载不成功”。我看过许多其他SO论坛,一些教程,以及我所拥有的应该有用的东西。是的,我已经在清单文件中设置了internet和外部存储权限。是的,我已经在手机的应用程序设置中授予了存储权限。我在运行API 28的Android模拟器和运行相同API的真实手机上都试过。以下是我的代码:

        String url = "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4";

        DownloadManager downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE);
        DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

        request.setTitle("title");

        request.setDescription("Your file is downloading");

        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

        request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC, "" + System.currentTimeMillis());

        request.allowScanningByMediaScanner();
        request.setAllowedOverMetered(true);
        request.setAllowedOverRoaming(true);

        //Enqueue download and save the referenceId
        long downloadReference = downloadManager.enqueue(request);

        if (downloadReference != 0) {
            Toast.makeText(getApplicationContext(), "download started", Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(getApplicationContext(), "no download started", Toast.LENGTH_SHORT).show();
        }

欢迎提供任何帮助或建议。谢谢。

由于网络安全问题,此问题会出现。如果您在上述pie API中使用不安全的url,则它无法执行您的url。检查

避免明文通信的原因是缺乏保密性, 真实性和防篡改保护;网络攻击者 可以窃听传输的数据,也可以修改它而无需 检测到

在清单中添加以下内容以绕过所有安全性

<application
  android:name=".ApplicationClass"
  ....
  android:usesCleartextTraffic="true">

我在2021年11月1日的经历,min SDK 19,Target SDK 30

我花了一天的时间使用下载服务,终于成功了。 对于任何想第一次尝试的人来说,总结一下:

  • 别忘了在清单中添加写入外部存储和INTERNET权限
  • 使用requestPermissions()向用户授予权限
  • 使用getExternalFilesDir()而不是getExternalStorageDirectory()
  • 如果您是从http://so下载,请将usesCleartextTraffic=“true”添加到清单中

  • 您是否使用其他url尝试过它?@AbhayKoradiya是的,我尝试过3个url只有一个问题将于28日发布?@AbhayKoradiya我没有尝试过其他url。您检查过您的移动存储空间吗?就是这样。我添加了它,但我没有将url添加到我试图从中下载的测试网站。谢谢你的帮助!谢谢,它能工作。我花了几个小时试图让.apk下载生效,最后这就是解释为什么失败的答案。非常感谢。