我有一个带有按钮的页面,该按钮重定向到启动 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 设备的 Chrome、所有主要的桌面浏览器,以及一些 Android 设备上的普通浏览器。但是,在我的手机 (HTC Rezound) 和 Galaxy Tab 2 的普通浏览器上,短按按钮无法下载 - 即使在这些设备上的 Chrome 上运行,也无法开始下载。长按按钮,然后从出现的上下文菜单中选择“打开”,确实可以从股票浏览器下载 APK。关于为什么没有在股票浏览器上短按开始下载的任何想法?
编辑:
我应该提到,用于链接到此下载的按钮位于 iframe 中。相反,如果我执行 document.location.href = (download script URL) 而不是在文档加载时将脚本的源代码加载到 iframe 中,则下载确实可以通过短按进行。与股票浏览器如何处理 iframe 有关?页面和它指向的脚本在同一个域中。