高通随身WIFI,短信转发自动开启WIFI,关闭数据流量

短信转发自动开启WIFI 关闭数据流量和热点

前提

1.WIFI 首先root

开始

1.连接ADB 上传脚本文件

# 上传enable_wifi.sh文件到wifi棒子的/data/local/tmp/目录
adb push enable_wifi.sh /data/local/tmp/

2.挂载 system 分区可读写

# 挂载 system 分区可读写
adb shell   #通过 ADB 连接到 Android 设备的命令行界面
su    #切换到超级用户 (root) 权限,这需要设备已经获取 root 权限
mount -o remount,rw /system   #将 /system 分区重新挂载为可读写模式(默认通常是只读的)


adb shell 
su
mount -o remount,rw /system

3.配置WIFI自启动脚本 并修改权限

# 配置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


cp -a /data/local/tmp/enable_wifi.sh /data/adb/service.d/
将/data/local/tmp/目录下的enable_wifi.sh脚本,复制到/data/adb/service.d/目录
-a参数表示保持文件的原有属性(如权限、时间戳等)进行递归复制
/data/adb/service.d/是 Magisk 等 root 工具的启动脚本目录,该目录下的脚本会在系统启动时自动执行
chmod 777 /data/adb/service.d/enable_wifi.sh
为复制后的脚本设置权限:777表示所有用户(所有者、所属组、其他用户)都拥有读、写、执行权限
这是为了确保脚本能够被系统执行(但777权限过于宽松,实际使用中755通常已足够,且更安全)
chown root:root /data/adb/service.d/enable_wifi.sh
将脚本的所有者和所属组设置为root(系统超级用户)
符合 Android 系统中系统级脚本的权限规范,避免因权限不足导致脚本无法执行

4.选择模式

# 默认脚本刷入后采用热点和卡自带流量模式,如果需要使用WiFi,那么在
 
adb shell 
su
 
echo 1 > /data/adb/enable_wifi
 
# 重启设备后讲默认开启wif,关闭热点、禁用4G移动数据
 
# 1 开启wif,关闭热点、禁用4G移动数据
 
# 0 关闭WiFi,开启热点 (设置--移动数据自行ARDC开启,避免无流量的卡出问题)


adb shell连接到 Android 设备的命令行界面。
su切换到 root 权限(需要设备已 root),否则后续写入文件的操作会因权限不足失败。
echo 1 > /data/adb/enable_wifi
在/data/adb/目录下创建(或覆盖)一个名为enable_wifi的文件
向该文件写入内容1(通常1表示 “启用”,0表示 “禁用”,具体逻辑由读取该文件的程序定义)
# 上传enable_wifi.sh文件到wifi棒子的/data/local/tmp/目录
adb push enable_wifi.sh /data/local/tmp/
 
# 挂载 system 分区可读写
adb shell - 通过 ADB 连接到 Android 设备的命令行界面
su - 切换到超级用户 (root) 权限,这需要设备已经获取 root 权限
mount -o remount,rw /system - 将 /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开启,避免无流量的卡出问题)

enable_wifi.sh 文件内容

enable_wifi.sh

#!/system/bin/sh

# 开关
file_path="/data/adb/enable_wifi"

# 检查文件是否存在
if [ ! -f "$file_path" ]; then
  # 如果文件不存在,创建文件并写入 "0"
  echo "0" > "$file_path"
fi

file_content=$(cat $file_path)

LOGF=/data/local/tmp/service.d/enable_wifi.log
mkdir -p $(busybox dirname "$LOGF")
rm -f $LOGF
echo "Env info:" >> $LOGF
export >> $LOGF

SVC=/system/bin/svc

switch_data(){
    while true; do
        $SVC data enable  # 启用移动数据
        sleep 3         # 等待3秒
        $SVC data disable # 禁用移动数据
        sleep 250       # 等待250秒
    done
}

wifiMode() {
    echo "Enabling Wifi..."
    $SVC data disable # avoid expensive data usage!
    service call wifi 29 i32 0 i32 0 # name=null, enable=false
    $SVC wifi disable
    sleep 2
    $SVC wifi enable
    sleep 2
    $SVC wifi prefer
    # svc usb setFunction diag,serial_smd,rmnet_bam,adb  rndis
    # svc usb setFunction diag,serial_smd,rndis,adb  
    # $SVC usb setFunction diag,serial_smd,adb
}

tetherMode() {
    echo "Enabling Tether..."
    # $SVC data disable # avoid expensive data usage!
    $SVC wifi disable
    service call wifi 29 i32 0 i32 1 # name=null, enable=true
}


checkWifi() {
    if ip a show wlan0 | grep inet | grep -v "scope link" | grep -v "169.254" >/dev/null; then
        echo "Has WiFi IP"
        return 0
    else
        echo "No WiFi IP"
        return 1
    fi
}


mainFunc() {
    set -x
    if [ -z "$DEBUG" ]; then
        echo "Waiting for bootup!"
        sleep 60
    fi
    
    for i in $(busybox seq 1 20); do # 1min not connected then go hotspot
        wifiMode;
        if checkWifi; then
            echo "Wifi Connected, good to go!"
            break
        fi
        if [ $i = 20 ]; then
            echo "Failed to connect to WiFi! Going to tether mode!"
            tetherMode;
            break
        fi
        sleep 3
    done
    
    echo "Updating clock!"
    for i in $(busybox seq 1 20); do
        am broadcast -a android.intent.action.NETWORK_SET_TIME -f 536870912
        sleep 2
    done
}


# 检查文件内容
if [ "$file_content" = "1" ]; then
  mainFunc >> $LOGF 2>&1
else
  tetherMode >> $LOGF 2>&1
  $SVC data enable
fi

这有帮助吗?