前一段时间看到helium mobile可以申请免费的号码,想着可以用来接短信,就注册了一个。试了下在中国大陆使用,漫游的话是无法接收短信的,想接短信只能开启wifi calling(VoWiFi),在主力机iPhone上试了下是直接可以开启使用的。但主力机是国行的只有2个实体sim卡槽,已经占满了,想着在备用机mate 20 pro上使用。
Wifi Calling开启条件
先直接说一下Vowif的开启条件:
1.运营商支持,像国内3大运营商目前(25年7月)还没有正式支持,电信前一段时间小规模测试过;
2.手机设备支持,这里主要是软件层面的支持。这里其实包括两个部分,一个是手机内部运营商下发的配置中开启了vowifi,另一个是系统中需要有vowifi支持的实现。
pixel-volte-patch修改
想着给 mate 20 pro 打开 vowifi 支持,google了一波,看到有pixel-volte-patch这个 app ,可以配合 shizuku 使用。这个app主要功能就是更改手机中运营商下发的配置,将里面vowifi的支持改为true。
这里先简单介绍下shizuku,原理就是利用adb的权限在不root的情况下,支持一些系统接口的调用。这里root权限>adb 权限>普通用户权限。
在mate20pro上安装好shizuku和pixel-volte-patch,试了下shizku授予权限后,app直接闪退。一直也没有接触过安卓开发,在学校读书时其实还是有兴趣的,但一直没有实践。现在想着正好借着这个机会研究一下安卓开发。
首先使用logcat看了下app闪退的日志,找到了原因。由于 mate20pro系统底层还是Android 10(即使更新了鸿蒙底层也仍然是Android10) ,软件原版应该是给 Android 11 及以上使用的,有些系统api Android10和11接口定义不一样,接口发生变化,调用失败导致崩溃。
找到原因的话,接下来根据Android 10的接口,重新进行适配就可以了,这里推荐一个Android源码在线查看的网站xrefandroid,搜索功能比较强大。具体修改的代码已经fork了个repo[https://github.com/yjcn/pixel-volte-patch],可以查看commit记录看到具体的修改。
修改完成后在mate 20pro上测试了下,是可以修改运营商配置的,但是修改完成后仍然无法开启vowifi,应该是国行的系统已经阉割了vowifi支持。pixel-volte-patch原来的repo issue中已经有其他用户反馈过Android 10上crash的问题,具体见https://github.com/kyujin-cho/pixel-volte-patch/issues/320。在这个issue中我艾特了其他用户,让大家试试我修改后的版本能否在Android 10上正常使用,看起来大部分用户反馈用起来没问题。
总的来说通过这折腾还是又了解了下Android开发的知识,也大概了解下kotlin的基本语法,另外修改过程中copilot也起了不少作用,虽然大模型还是会有幻觉瞎逼逼的问题。
参考资料