今天在 b 站评论看到一个网站想打开,长按复制触发了传送门,也识别出了网站,但是点击打开就是无法打开任何的东西。
当时我意识到,可能是删了官方浏览器后没有设置默认浏览器,或者传送门里面可以设置第三方浏览器打开但是我没设置?
搜了下,默认浏览器是 via,传送门里面没有选项是可以修改启动浏览器的。
也许是只能用官方浏览器打开?但为什么非得要官方浏览器打开?我找了下有没有一些能够让传送门调用第三方浏览器打开的方法。

找到并且尝试了以下几种方法

修改传送门调用浏览器的代码逻辑

原来的代码

原来的代码

下面是修改后的代码

.method private static getIntentWithBrowser(Ljava/lang/String;)Landroid/content/Intent;
    .registers 3

    .line 168
    invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v0

    if-nez v0, :cond_16

    .line 169
    new-instance v0, Landroid/content/Intent;

    const-string v1, "android.intent.action.VIEW"

    invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V

    .line 170
    invoke-static {p0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object p0

    invoke-virtual {v0, p0}, Landroid/content/Intent;->setData(Landroid/net/Uri;)Landroid/content/Intent;

    goto :goto_17

    :cond_16
    const/4 v0, 0x0

    :goto_17
    return-object v0
.end method

一开始提示包名不一致不能安装
需要修改包名,打开 AndroidManifest.xml,然后将 package="com.miui.contentextension" 修改成 package="com. Miui. Contentextension. Mod"。

修改后安装时出现以下报错

INSTALL_FAILED_DUPLICATE_PERMISSION: Package com.miui.contentextension.mod attempting to redeclare permission miui.taplus.permission.MIUI_PLUS already owned by com.miui.contentextension

意思就是权限已经被定义并且拥有,需要打开 AndroidManifest.xml 文件,删除所有 permission 标签。

修改后又出现以下错误

INSTALL_FAILED_CONFLICTING_PROVIDER: Scanning Failed.: Can't install because provider name com.miui.contentextension.provider.switchcontrolprovider (in package com.miui.contentextension.mod) is already used by com.miui.contentextension

意思是 provider 组件冲突,有不同的官方名称,还是需要打开 AndroidManifest.xml 文件,将所有的 provider 标签内 name 末尾加上.mod。

接着安装就没有报错了,但是一闪而过 usb 安装.... 什么的,然后还是安装不上。打开开发者选项,将 usb 安装打开就可以安装了。可能是 mt 管理器用的是 usb 安装。
成功安装

成功安装

安装完成后,因为不是系统应用,设置里面搜不到。桌面也找不到,问了下 ai,可以使用 adb 命令打开,用 shizukurunner 执行以下命令:

am start -n com.miui.contentextension.mod/com.miui.contentextension.setting.activity.MainSettingsActivity

adb打开传送门

adb打开传送门

成功打开,但是点击启动时却自动关闭。只能换一种思路了。
点击两个触发都是自动关闭

点击两个触发都是自动关闭

修改 via 浏览器的包名为小米浏览器

山不向我,我便向山。为何不把 via 浏览器包名改成小米浏览器包名呢?
提取出 via 的安装包,将原来的 via 浏览器删除,打开 AndroidManifest.xml,package="mark.via"改成 package="com.miui.browser"。
成功安装,重新装回官方传送门,测试,还是打不开。
点击打开链接没反应

点击打开链接没反应

总结

世上还是 root 好,如果有 root 使用 lsposed 模块 传送门增强 一切问题迎刃而解。说到底还是小米的传送门设计太垃圾了,只能调用官方浏览器却不能调用默认浏览器,太过笨拙......