2013-05-09 99 views
0

我有一个页面上的按钮,重定向到一个PHP脚本,开始APK下载,像这样($ androidPackage是文件名,$ package包含绝对路径):APK下载不支持股票Android浏览器

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; 

这种方法适用于Chrome的几款Android设备,所有主要的桌面浏览器,并在浏览器中的股票部分Android设备。但是,在我的手机(HTC Rezound)和Galaxy Tab 2上,在股票浏览器上,下载不能在短按按钮上工作 - 它不会启动,即使这可以在Chrome上运行。长按按钮,然后从出现的上下文菜单中选择“打开”,确实可以从股票浏览器下载APK。有关为什么下载不是以股票浏览器上的短按开始的任何想法?

编辑:

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

回答

1

的问题是,它的iframe中。加入

target="_blank" 

到锚标记指向下载,每This question's answer,固定我的权利了。

1

内容类型更改为octet-stream

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

我最初的内容类型设置为此并观察到相同的行为。 – Dan 2013-05-09 16:09:38