我有使用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);
}
});
}
}
我如何解决这个问题?
答案 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 方应用程序后,我不会再遇到这个问题,因为下载的文件现在可以被该应用程序打开了。 >