如何修复DownloadManager无法打开文件和文件丢失?

时间:2017-08-25 16:36:57

标签: android android-download-manager

我有使用downloadManager的项目,我已经可以在屏幕上显示下载进度,但问题是我下载文件后点击下载完成,如果它说“无法打开文件” 这是我的代码,

public class MainActivity extends AppCompatActivity {
    Button tombolDownload;
    DownloadManager downloadManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tombolDownload = (Button) findViewById(R.id.btnDownload);
        tombolDownload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
                Uri uri = Uri.parse("http://192.168.1.64/FileAPK/app1.apk");
                DownloadManager.Request request = new DownloadManager.Request(uri);
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                Long reference = downloadManager.enqueue(request);
            }
        });
    }
}

我如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我认为您应该声明APK文件的MIME类型。

MIME类型为:application/vnd.android.package-archive

使用如下:

request.setMimeType("application/vnd.android.package-archive");

编辑:还添加以下行,以便它知道存储它的位置。在你的代码中,它使用一些没有扩展名的随机数保存文件,因此无法打开文件问题。

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,"app1.apk");

其中app1.apk是带扩展名的文件名,并且还添加了setMimeType()

不要忘记持久性WRITE_EXTERNAL_STORAGE

希望有所帮助

答案 1 :(得分:0)

我在下载 zip 文件时遇到了类似的问题。

在尝试通过点击下载管理器的通知打开下载的文件时,我会收到相同的 Can't open file 通知。

在我的特殊情况下,我了解到它与代码本身无关 - 因为文件确实被正确下载 - 但事实上正在使用的设备没有安装可以处理 zip 文件。

在我安装了能够处理 zip 文件的第 3 方应用程序后,我不会再遇到这个问题,因为下载的文件现在可以被该应用程序打开了。 >