【发布时间】:2015-03-05 12:15:20
【问题描述】:
我正在使用DownloadManager 从 url 下载 apk。下载完成,我在我的 BroadcastReceiver 中获得了DownloadManager.ACTION_DOWNLOAD_COMPLETE 的 onReceive。
一些编码:我从一个 url 下载 apk 文件到下载目录。
DownloadManager.Request r = new DownloadManager.Request(mUri);
r.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "myapp.apk");
r.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
DownloadManager dm = (DownloadManager) activity.getSystemService(Context.DOWNLOAD_SERVICE);
SharedPreferences mSharedPref = activity.getSharedPreferences("package", Context.MODE_PRIVATE);
mSharedPref.edit().putLong("downloadID", dm.enqueue(r)).commit();
接收
File apkFile = new File(Environment.DIRECTORY_DOWNLOADS + "myapp.apk");
Intent promptInstall = new Intent(Intent.ACTION_VIEW).setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
startActivity(promptInstall);
问题:
- 文件在那里,我想执行它,但我的包安装程序没有显示
- 即使我在手机下载文件夹中看到该文件,如果我想安装它,我也没有可供选择的软件包安装程序
- 我不确定文件和路径是否正确..
- 我尝试打开文件时收到来自 android 的解析错误
有人有想法吗?
【问题讨论】:
-
除非设备已设置为允许侧载,否则您希望如何运行此 apk?这种事情正是恶意代码想要的工作方式——从未知来源下载任意可执行文件并运行它们。
-
我不希望它自动运行。我想要用户可以选择使用包安装程序打开下载文件的提示。所以需要用户交互,它也不是恶意的..
-
这不是恶意的,因为它会启动安装程序,不会提示用户是否安装 APK。你能输出准确的
apkFile的路径吗? -
我登录onReceive的路径是:apkFile.getPath() = "Download/myapp.apk" apkFile.getAbsolutePath() = "/Download/myapp.apk"
标签: android apk android-download-manager