解决android 提示 “无法打开文件”

转自

http://www.cnblogs.com/yaozhongxiao/archive/2013/07/17/3194765.html

 感谢原作者的总结

 在项目中遇到安卓自带浏览器下载成功 , 但无法打开已下载的APK文件自动安装的问题,特别是三星系列的手机普遍存在这种问题,google后发现也有朋友遇到类似的问题:  http://bbs.csdn.net/topics/390262400

引:   

     写了一些 android 的应用放在网站上让人下载,在某些机型上,三星的 android 的 4.0 以上多款机型最普遍, 用安卓自带浏览器下载程序,会提示 "无法打开文件",导致下载后不能直安装.

      现在只能采用下面方法解决:
      1.用 UC 来下载安装,但这样就要求客户要用 UC 才可下载及安装我们的系统
      2.叫用户自己在 android 在桌面上,打开文件夹, 则该 apk 点击时即可安装
    问题:某些 android 自带浏览器 , 可能 对下载的 apk 安装进行了限制。 我想通过自己办法,例如修改 apk 或者加某些编译参数,能否解决这种安装的兼容问题 ?

    解决方法:(1).  在IIS服务器上,MIME类型中添加一个: 

              文件扩展名: .apk
              MIME类型:  application/vnd.android.package-archive

 (2).  服务端部署在tomcat下,已经在tomcat的web.xml里面配置了mini type

         <mime-mapping>
                <extension>apk</extension>
                <mime-type>application/vnd.android.package-archive</mime-type>
           </mime-mapping>

按照以上方法,解决了三星手机的下载后,apk无法打开直接安装的问题,同时却发现华为的一款手机使用默认的浏览器下载后仍然无法打开安装,经过多番测试,发现在android的AndroidManifest.xml中,如果缺少targetSdkVersion,华为手机通过默认浏览器下载后无法安装,加上之后一切正常(可见对于不同的android系统是多么的让人纠结啊)

<uses-sdk  android:minSdkVersion="8" android:targetSdkVersion="8"/>

最后我PS一下:

如果的后台程序使用的是流处理的文件下载请求,则需要设置一下contentType为application/vnd.android.package-archive才行 ,否则依旧无法识别。

相关推荐