【问题标题】:APK download doesn't work on stock Android browserAPK 下载不适用于现有的 Android 浏览器
【发布时间】:2013-05-04 02:42:37
【问题描述】:

我有一个带有按钮的页面,该按钮重定向到启动 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 有关?页面和它指向的脚本在同一个域中。

【问题讨论】:

    标签: php android web apk


    【解决方案1】:

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

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

    【讨论】:

    • 我最初将内容类型设置为此并观察到相同的行为。
    【解决方案2】:

    问题在于它位于 iframe 中。添加

    target="_blank"
    

    到指向下载的锚标记,每个This question's answer,把我修好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2012-08-19
      相关资源
      最近更新 更多