在
vendor/mediatek/proprietary/packages/apps/Browser/ src/com/android/browser/DownloadHandler.java
里面的UrlUtil的包导错了
-import android.webkit.URLUtil;
+import com.android.browser.util.URLUtil;
上面这个是framework下的。而下面这个就在browser应用中,框架那一套算法太老了,下面的算法更完善,能识别更多形式的文件,某些64位的应用无法识别转成apk,最后只能是bin文件。具体怎么算的不知道
下面这类里的这个对于64wei的算法更精进了
static String parseContentDisposition(String contentDisposition) {
在这个src/com/android/browser/util/URLUtil.java之中
里面不难找到extension = ".bin";
但是这里是在这判断下的
int dotIndex = filename.indexOf('.');
if (dotIndex < 0) {
而这个根本就没走这个if,所以根本没用到这个bin的转换逻辑,其实这个文件从一开始就是.apk文件,想想也知道,大厂出的app咋可能不是apk格式,所以就是不会走这个if,源码框架的这个类也有同样的方法,但里面算法肯定是识别不出来的都归bin文件处理了
以上虽然可以不再是bin文件了,但是下载后还是无法安装,就是mime格式不对
需要在src/com/android/browser/DownloadHandler.java
中再增加
if (filename.endsWith(".apk") && mimetype.equals("application/octet-stream"))
{
mimetype = "application/vnd.android.package-archive";
}
原来的mimetype可以打个log看下是啥,这个格式装不了,换成application/vnd.android.package-archive