APK下载不适用于Android浏览器

时间:2013-05-09 14:59:34

标签: php android web apk

我有一个带有按钮的页面,该按钮重定向到启动APK下载的PHP脚本,如下所示($ androidPackage是文件名,$ package包含绝对路径):

   header('Content-Description: File Transfer');
   header('Content-Type: application/vnd.android.package-archive');
   header('Content-Disposition: attachment; filename=' . $androidPackage);
   header('Content-Transfer-Encoding: binary');
   header('Expires: 0');
   header('Cache-Control: must-revalidate');
   header('Pragma: public');
   header('Content-Length: ' . filesize($package));
   ob_clean();
   flush();
   readfile($package);
   exit; 

此方法适用于多个Android设备,所有主要桌面浏览器以及某些Android设备上的股票浏览器。但是,在我的手机(HTC Rezound)和Galaxy Tab 2上,在股票浏览器上,只需按一下按钮即可完成下载 - 它无法启动,即使这可以在这些设备上的Chrome上运行。长按按钮,然后从出现的上下文菜单中选择“打开”,可以从股票浏览器下载APK。关于为什么下载不是从股票浏览器上短按开始的任何想法?

编辑:

我应该提到用于链接到此下载的按钮位于iframe中。相反,如果我执行document.location.href =(下载脚本URL)而不是在文档加载时将脚本的源加载到iframe中,则下载确实可以短按。与股票浏览器如何处理iframe有关?该页面及其指向的脚本位于同一个域中。

2 个答案:

答案 0 :(得分:1)

将您的内容类型更改为octet-stream

header('Content-Type: application/octet-stream');

答案 1 :(得分:1)

问题是它在iframe中。添加

target="_blank"

指向下载的锚标记,按This question's answer,修正了我。