如何通过ADB在安卓手机上更改首选网络类型?

6

如何通过ADB更改首选网络类型?

例如:设置仅使用GSM、仅使用WCDMA、仅使用LTE或自动模式。

3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1

这对我的设备有效:

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "update global SET value = 1 WHERE name = 'preferred_network_mode'"
adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select value FROM secure WHERE name = 'preferred_network_mode'"
adb shell settings put global airplane_mode_on 1
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
sleep 5;
adb shell settings put global airplane_mode_on 0
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false

你能说一下为什么需要 sleep 5 吗?还有你使用的是哪个 Android 版本? - user3194011
除此之外,为什么要使用 sqlite3 ... 而不是 settings put global preferred_network_mode 1?另外,第二个命令是做什么用的? - user3194011
不行!在CM12已root的设备上无法工作。它会更改.db中的值,但更改不会在无线电级别生效。您可以通过*#*#4636#*#*中的“电话信息”进行检查,其中首选网络类型保持不变。而且,重新启动会有点恢复原状。您介意解释一下这些命令的含义吗? - user3194011
@Arch,它适用于Lollipop和KitKat。该命令用于打开您的设备setting.db并将preferred_network_mode字段更改为新值。 - pooja
我已经尝试了重启和飞行模式...我不想重启设备,所以使用了AP模式。使用Sleep函数可以产生一些延迟。这个选项在设备网络设置中会发生变化。 - pooja
显示剩余3条评论

0
我希望这可以帮到你: 仅限GSM:
adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "update global SET value=1 WHERE name='preferred_network_mode'"

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select value FROM secure WHERE name='preferred_network_mode'"

adb reboot

对于LTE,更改value=11 对于WCDMA,更改value=2


你可以使用飞行模式开/关代替adb reboot。 - pooja
@pooja 不,飞行模式对我的三个设备都没有帮助。只有硬重启/软重启有效。 - user3194011
1
@Arch,它适用于我root过的设备。只需检查我的答案即可。 - pooja
非root设备? - Usman
错误:无法打开数据库“/data/data/com.android.providers.settings/databases/settings.db”:无法打开数据库文件。 - Usman
显示剩余3条评论

0

设置RAT的ADB命令:

**adb shell设置全局首选网络模式1为2 --> 在SUB1上启用WCDMA

adb shell设置全局首选网络模式2为1 --> 在SUB2上启用GSM

adb shell停止ril-daemon

adb shell启动ril-daemon

adb shell设置全局飞行模式为1

adb shell广播 -a android.intent.action.AIRPLANE_MODE --ez state true

sleep 5;

adb shell设置全局飞行模式为0

adb shell广播 -a android.intent.action.AIRPLANE_MODE --ez state false**

RIL_PreferredNetworkType:

PREF_NET_TYPE_GSM_WCDMA                = 0, /* GSM/WCDMA (WCDMA preferred) */
PREF_NET_TYPE_GSM_ONLY                 = 1, /* GSM only */
PREF_NET_TYPE_WCDMA                    = 2, /* WCDMA  */
PREF_NET_TYPE_GSM_WCDMA_AUTO           = 3, /* GSM/WCDMA (auto mode, according to PRL) */
PREF_NET_TYPE_CDMA_EVDO_AUTO           = 4, /* CDMA and EvDo (auto mode, according to PRL) */
PREF_NET_TYPE_CDMA_ONLY                = 5, /* CDMA only */
PREF_NET_TYPE_EVDO_ONLY                = 6, /* EvDo only */
PREF_NET_TYPE_GSM_WCDMA_CDMA_EVDO_AUTO = 7, /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL) */
PREF_NET_TYPE_LTE_CDMA_EVDO            = 8, /* LTE, CDMA and EvDo */
PREF_NET_TYPE_LTE_GSM_WCDMA            = 9, /* LTE, GSM/WCDMA */
PREF_NET_TYPE_LTE_CMDA_EVDO_GSM_WCDMA  = 10, /* LTE, CDMA, EvDo, GSM/WCDMA */
PREF_NET_TYPE_LTE_ONLY                 = 11, /* LTE only */
PREF_NET_TYPE_LTE_WCDMA                = 12,  /* LTE/WCDMA */
PREF_NET_TYPE_TD_SCDMA_ONLY            = 13, /* TD-SCDMA only */
PREF_NET_TYPE_TD_SCDMA_WCDMA           = 14, /* TD-SCDMA and WCDMA */
PREF_NET_TYPE_TD_SCDMA_LTE             = 15, /* TD-SCDMA and LTE */
PREF_NET_TYPE_TD_SCDMA_GSM             = 16, /* TD-SCDMA and GSM */
PREF_NET_TYPE_TD_SCDMA_GSM_LTE         = 17, /* TD-SCDMA,GSM and LTE */
PREF_NET_TYPE_TD_SCDMA_GSM_WCDMA       = 18, /* TD-SCDMA, GSM/WCDMA */
PREF_NET_TYPE_TD_SCDMA_WCDMA_LTE       = 19, /* TD-SCDMA, WCDMA and LTE */
PREF_NET_TYPE_TD_SCDMA_GSM_WCDMA_LTE   = 20, /* TD-SCDMA, GSM/WCDMA and LTE */
PREF_NET_TYPE_TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO  = 21, /* TD-SCDMA, GSM/WCDMA, CDMA and EvDo */
PREF_NET_TYPE_TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA   = 22  /* TD-SCDMA, LTE, CDMA, EvDo GSM/WCDMA */

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,