浏览器browser,下载应用宝app,下的是bin文件无法安装,不是apk,其他应用可以下载

博客讨论了在Android浏览器中,由于`URLUtil`导入错误导致64位APK被误识别为.bin文件的问题。通过修正导入路径并更新解析算法,确保APK文件正确识别。然而,即使文件名正确,由于MIME类型错误(application/octet-stream),APK仍无法安装。解决方案是在`DownloadHandler.java`中检查文件扩展名并适当地将MIME类型更改为`application/vnd.android.package-archive`以允许安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Youth King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值