如何修复 DownloadManager 无法打开文件和文件丢失?
How to fix DownloadManager can't open file and file missing?
我有使用 downloadManager 的项目,我已经可以在屏幕上显示下载进度,但问题是当我下载文件后单击下载完成通知时提示 "Can't open file"
这是我的代码,
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);
}
});
}
}
我该如何解决这个问题?
我认为你也应该声明 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
希望对您有所帮助
我在下载 zip 文件时遇到了类似的问题。
尝试通过单击下载管理器的通知打开下载的文件时,我会收到相同的 Can't open file
通知。
在我的特殊情况下,我了解到它与代码本身无关——因为文件确实被正确下载了——但事实是所使用的设备没有安装可以处理的应用程序zip 个文件。
在我安装了能够处理 zip 文件的第 3 方应用程序后,我不会再遇到这个问题,因为下载的文件现在可以通过以下方式打开那个应用程序。
我有使用 downloadManager 的项目,我已经可以在屏幕上显示下载进度,但问题是当我下载文件后单击下载完成通知时提示 "Can't open file" 这是我的代码,
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);
}
});
}
}
我该如何解决这个问题?
我认为你也应该声明 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
希望对您有所帮助
我在下载 zip 文件时遇到了类似的问题。
尝试通过单击下载管理器的通知打开下载的文件时,我会收到相同的 Can't open file
通知。
在我的特殊情况下,我了解到它与代码本身无关——因为文件确实被正确下载了——但事实是所使用的设备没有安装可以处理的应用程序zip 个文件。
在我安装了能够处理 zip 文件的第 3 方应用程序后,我不会再遇到这个问题,因为下载的文件现在可以通过以下方式打开那个应用程序。