关键字: 高通410 随身WiFi systemUI 自动重启 5分钟 移动数据
随身WiFi就不多描述了。
最近用随身Wifi做短信转发,SIM卡没流量,所以需要关闭网络共享,关闭移动数据,使用WiFi连接无线路由器上网转发短信。
本来一切都做好了,结果每5分钟左右系统就自动重启。
经过分析logcat发现systemui中,会发送reboot广播,所以只需要反编译SystemUI.apk 修改去掉相关代码即可。
具体代码如下:
com.android.systemui.statusbar.policy.NetworkController
- // 无sim卡重启
- private final Runnable mSimSTMonitorRunable = new Runnable() { // from class: com.android.systemui.statusbar.policy.NetworkController.2
- @Override // java.lang.Runnable
- public void run() {
- if (NetworkController.this.mSimState == IccCardConstants.State.ABSENT) {
- Log.d("StatusBar.NetworkController", "reboot not sim");
- Intent reboot = new Intent("android.intent.action.REBOOT");
- reboot.putExtra("nowait", 1);
- reboot.putExtra("interval", 1);
- reboot.putExtra("window", 0);
- TelephonyManager.set_led_alloff();
- NetworkController.this.mContext.sendBroadcast(reboot);
- }
- }
- };
-
-
- // 有sim卡且sim卡ready,但是关闭了移动数据,或者开启了WiFi,重启系统
- private final Runnable mDataMonitorRunable = new Runnable() { // from class: com.android.systemui.statusbar.policy.NetworkController.3
- @Override // java.lang.Runnable
- public void run() {
- Log.d("StatusBar.NetworkController", "Data time out , mAirplaneMode=" + NetworkController.this.mAirplaneMode + " mSimState=" + NetworkController.this.mSimState + " last_data_state=" + NetworkController.last_data_state);
- if (!NetworkController.this.mAirplaneMode && NetworkController.this.mSimState == IccCardConstants.State.READY && !NetworkController.this.mDataConnected) {
- Intent reboot = new Intent("android.intent.action.REBOOT");
- reboot.putExtra("nowait", 1);
- reboot.putExtra("interval", 1);
- reboot.putExtra("window", 0);
- TelephonyManager.set_led_alloff();
- NetworkController.this.mContext.sendBroadcast(reboot);
- }
- }
- };
-
-
-
-
- // 相关调用处 关闭移动数据
- Log.d("StatusBar.NetworkController", "mAirplaneMode=" + this.mAirplaneMode + " mSimState=" + this.mSimState + " last_data_state=" + last_data_state);
- if (!this.mAirplaneMode && this.mSimState == IccCardConstants.State.READY && last_data_state) {
- Log.d("StatusBar.NetworkController", "start no data connect monitor");
- this.mDataMonitorHdl.postDelayed(this.mDataMonitorRunable, 300000L);
- last_data_state = false;
- }
- // 相关调用处 无sim卡
-
- if (this.mSimState != IccCardConstants.State.READY) {
- update_4G_nosignal(true);
- if (this.mLastSimstate > 0) {
- this.mLastSimstate = 0;
- this.mSimSTMonitorHdl.postDelayed(this.mSimSTMonitorRunable, 60000L);
- }
- }
-
-
- //我的处理方法是
- // 在两处位置都删除以下两行代码
- TelephonyManager.set_led_alloff();
- NetworkController.this.mContext.sendBroadcast(reboot);
-
- // 删除
- this.mSimSTMonitorHdl.postDelayed(this.mSimSTMonitorRunable, 60000L);
- this.mDataMonitorHdl.postDelayed(this.mDataMonitorRunable, 300000L);
-
上述处理去掉关机逻辑后就正常了。
com.android.systemui.ElinkAutoTestService
- public void enter_SnImeiCheckFailed() {
- boolean state = true;
- int count = 0;
- while (true) {
- if (count % 60 == 0) {
- ElinkAutoTestService.this.changeAirplaneModeSystemSetting(true);
- }
- if (state) {
- TelephonyManager.write_int("/sys/class/leds/WIFI_S/brightness", true);
- TelephonyManager.write_int("/sys/class/leds/4G_S/brightness", true);
- TelephonyManager.write_int("/sys/class/leds/4G_L2/brightness", true);
- } else {
- TelephonyManager.write_int("/sys/class/leds/WIFI_S/brightness", false);
- TelephonyManager.write_int("/sys/class/leds/4G_S/brightness", false);
- TelephonyManager.write_int("/sys/class/leds/4G_L2/brightness", false);
- }
- ElinkAutoTestService.this.sleepAfterWifiEnable(1000);
- state = !state;
- count++;
- }
- }
- public class ElinkReportDeviceConfig implements Runnable {
- private String TAG = "ElinkReportDeviceConfig";
- String url_http = "http://xinxun.china-m2m.com/api/device/config";
- ......
- }
-
- // 搜索 http:// 及 :1771 关键字,相关链接URL改成127.0.0.1 相关端口1771 改成其他任意端口即可
UFI001C_MB_V01 Android 4.4 系统下SystemUI,如果系统不对版自己修改。
如果自己修改这里提到 odex合并、反编译和回编译问题,由于Android4.4 版本太老了,很多工具不支持,这里简述下工具及流程:
用odextool 里边的odextools_ok 合并odex (odextools_ok\Major\jdk.kye 配置JDK路径)
https://www.52pojie.cn//thread-1116637-1-1.html
系统system文件夹解包到romdir
结构如下:
romdir\system\app
romdir\system\framework
参考上述代码
安卓逆手(APKDB)2.1.4 调试版2021.07.02 – 淡蓝斯宇 (idoog.me)
用apkdb 反编译,和回编译,
反编译:
右击合并后的SystemUI.apk
选 R [R]->不反编译Resources(×)
选 4 用 apktool [4]-v2.0.0
修改smali 后回编译
选 4 用 apktool [4]-v2.0.0
选 B [B]保留原签名(仅适用于系统应用)
ps: 又增加修复进入自动飞行模式的限制,具体可以自己替换StstemUI.apk
1.必须先root系统
2. 替换文件
- # 推送本地 SystemUI.apk 到临时文件
- adb push SystemUI.apk /data/local/tmp/
-
- # 进入shell
- adb shell
- su
-
- # 挂载系统分区可读写
- mount -o remount,rw /system
-
- # 备份 systemui 源文件
- cp -a /system/priv-app/SystemUI* /sdcard/Download/
-
- # 替换系统文件
- cp -a /data/local/tmp/SystemUI.apk /system/priv-app/
- rm -rf /system/priv-app/SystemUI.odex
-
- # 修改文件权限
- chmod 644 /system/priv-app/SystemUI.apk
- chown root:root /system/priv-app/SystemUI.apk
-
- # 重启
- reboot
-
-
默认开启WIFI关闭热点
-
- ### 短信转发自动开启WIFI 关闭数据流量和热点
- adb push enable_wifi.sh /data/local/tmp/
-
- # 挂载 system 分区可读写
- adb shell
- su
- mount -o remount,rw /system
- # 配置WIFI自启动脚本 并修改权限
- cp -a /data/local/tmp/enable_wifi.sh /data/adb/service.d/
- chmod 777 /data/adb/service.d/enable_wifi.sh
- chown root:root /data/adb/service.d/enable_wifi.sh
-
-
-
- # 默认脚本刷入后采用热点和卡自带流量模式,如果需要使用WiFi,那么在
-
- adb shell
- su
-
- echo 1 > /data/adb/enable_wifi
-
- # 重启设备后讲默认开启wif,关闭热点、禁用4G移动数据
-
- # 1 开启wif,关闭热点、禁用4G移动数据
-
- # 0 关闭WiFi,开启热点 (设置--移动数据自行ARDC开启,避免无流量的卡出问题)
20230910
1. 修正复制文件命令,mv会导致ln问题,用cp替代
2. 修改因为无法连接到远控服务器导致进入飞行模式问题
3. 剔除远控代码、修改远控服务器及端口为127.0.0.1
20230908
1. 反编译SystemUI.apk 修改无sim卡、无信号、无移动数据连接导致5分钟重启问题