2013-05-09 1 views
0

У меня есть страница с кнопкой, которая перенаправляется на скрипт PHP, который запускает загрузку APK, например ($ androidPackage - это имя файла и $ package содержит абсолютный путь):APK download не работает на складе 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