從Android端鎖定慣用網路類型

Android的慣用網路類型, 也就是preferred network mode, 是儲存在SettingsProvider中. 當然, modem中也會儲存一份, 但依照Android的設計, 是以SettingsProvider中所存放的使用者設定值為主, 若AP core和modem不同步時, 就會由AP core主動向modem端發起同步的請求.

Android M開始, Android Settingsprovider的儲存方式改由原本的databases換成XML檔,因此,我們只要用修改設定檔的方式即可

1. adb pull/data/system/users/0/settings_global.xml

2. 將文件中 "preferred_network_mode" 的值改成你想要的RAT值 (相關值可參考 RilConstants.java ),這裡的10代表全網,
包含GSM, WCDMA, LTE和CDMA2000

<setting id="38"name="preferred_network_mode" value="10"package="android" />

<setting id="90"name="preferred_network_mode1" value="10"package="com.android.phone" />

3. 再將修改過的 settings_global.xml 推送回手機中

adbpush settings_global.xml data/system/users/0/

4. 重啟手機 "adb reboot"

回顧一下Android L以及以前版本.當時使用的是數據庫,操作如下

1. 輸入 "adb shell" 進入shell

2. 開啟數據庫 "sqlite3data/data/com.android.providers.settings/databases/settings.db"

3. 若要讀取當年的慣用網路設置值,可輸入

"select * from global wherename like ‘%preferred_network_mode%‘;"

4. 若要修改值,輸入以下SQL指令,這裡的3代表GSM/WCDMA

"update global set value =‘3‘ where name like ‘%preferred_network_mode%‘;"

5. 重啟手機 "adb reboot"

以下是 RilConstants.java 中所定義的網路模式值

    /* NETWORK_MODE_* See ril.h RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE */
    int NETWORK_MODE_WCDMA_PREF     = 0; /* GSM/WCDMA (WCDMA preferred) */
    int NETWORK_MODE_GSM_ONLY       = 1; /* GSM only */
    int NETWORK_MODE_WCDMA_ONLY     = 2; /* WCDMA only */
    int NETWORK_MODE_GSM_UMTS       = 3; /* GSM/WCDMA (auto mode, according to PRL)
                                            AVAILABLE Application Settings menu*/
    int NETWORK_MODE_CDMA           = 4; /* CDMA and EvDo (auto mode, according to PRL)
                                            AVAILABLE Application Settings menu*/
    int NETWORK_MODE_CDMA_NO_EVDO   = 5; /* CDMA only */
    int NETWORK_MODE_EVDO_NO_CDMA   = 6; /* EvDo only */
    int NETWORK_MODE_GLOBAL         = 7; /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
                                            AVAILABLE Application Settings menu*/
    int NETWORK_MODE_LTE_CDMA_EVDO  = 8; /* LTE, CDMA and EvDo */
    int NETWORK_MODE_LTE_GSM_WCDMA  = 9; /* LTE, GSM/WCDMA */
    int NETWORK_MODE_LTE_CMDA_EVDO_GSM_WCDMA = 10; /* LTE, CDMA, EvDo, GSM/WCDMA */
    int NETWORK_MODE_LTE_ONLY       = 11; /* LTE Only mode. */
    int NETWORK_MODE_LTE_WCDMA      = 12; /* LTE/WCDMA */
    int PREFERRED_NETWORK_MODE      = NETWORK_MODE_WCDMA_PREF;
时间: 2024-10-27 08:16:41

從Android端鎖定慣用網路類型的相关文章

Delphi APP 開發入門(二)Android/iOS設定,Hello World

Delphi APP 開發入門(二)Android/iOS設定,Hello World 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀次數:9047 發表時間:2014/05/12 tags: 行動開發 教學 App Delphi XE6 Android iOS 上一期 讓大家認識Delphi以及安裝後,今天要教大家設定Delphi在Android與iOS的開發環境,並且教大家透過寫出第一個Hello W

Android直播实现 Android端推流、播放

最近想实现一个Android直播,但是对于这方面的资料都比较零碎,一开始是打算用ffmpeg来实现编码推流,在搜集资料期间,找到了几个强大的开源库,直接避免了jni的代码,集成后只用少量的java代码就可实现编码.推流和取流播放,整理了一下做了一个demo,在这里记录一下 效果图:  编码和推流,有两个方案选择: 一: 使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据 需要自己实现的代码只是打开摄像头,写一个SurfaceView进行

Https系列之四:https的SSL证书在Android端基于okhttp,Retrofit的使用

Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http.https,基于spring boot四:https的SSL证书在Android端基于okhttp,Retrofit的使用 所有文章会优先在:微信公众号"颜家大少"中发布转载请标明出处 先来回顾一下 前面已分别介绍了https,SSL证书的生成,并完成了服务器端的https的部署并提到一

Spring MVC返回json数据给Android端

原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json数据.在这里边介绍两种个人觉得比较方便的两种方法(PS:其实是我现在只会这两种). 1.直接PrintWriter输出json数据 使用该方法时,可以自己拼凑json字符串,不过我并不赞同使用该方法,毕竟太容易出错了.所以这里我是先构建jsonobject对象,在将该对象打印出来.首先,我们要导入一

windows 代理服务器的搭建,提供Android 端访问外网.

这段时间遇到一个情况,移动的网络收费.但是可以访问学校内部的网络,比如说学校官网图书馆之类了.所以我这里便想到一个方法,用学校内部一个可以访问互联网的主机充当代理服务器(我这里使用自己的电脑,非服务器). 一,需要的软件: PC端,CCProxy Android端,proxydroid  如果想设置全局代理 (global proxy ) 手机需要  root   该软件的源码地址  :https://github.com/madeye/proxydroid 二,搭建必要条件: 充当服务器的PC

Android 端外推送到底有多烦?

Android 端外推送到底有多烦? 说Android端外推送比较烦,实际有两层意思:首先是说实现上比较麻烦,至今业界也没有找到一种完美的解决方案,Android程序员通常需要同时集成多家推送平台(如果有自己的端内推送,还要考虑与端内推送的配合):其次是说Android推送的市场现状比较混乱,无论选择哪一家,都让人纠结万分,难免心情烦躁.无论是你花费了多少功夫,做了多少优化,仍然可能存在推送不到或推送延迟的情况. 网上已经有很多关于Android推送的讨论,但很少有站在App开发者(特别是开发A

Java服务器对外提供接口以及Android端向服务器请求数据

讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么请求服务器,接收以及解析返回数据的. 服务端:还是在原先S2SH框架的项目上(搭建SSH详细步骤及其相关说明),加入Servlet来做对终端提供接口的事情. Android端:用了一个网络访问框架okHttp,向服务器请求数据. 服务端: servlet接收移动端的get.post请求,进行相应逻辑处理后将要返回的数据封装成json格式写出去. 对数据库的操作传统的Servlet是用jdbc,但是操作过于繁琐,

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

服务器安全运维:安全狗服云手机android端V2·2版正式上线

安全狗服云旗下基于云计算技术,于2014年初打造的云时代下最好的服务器安全运维云平台,其用"云安全,新运维"的思路为用户提供服务器安全所需的一切服务. 安全狗服云继7月9号服云web端V3.4(企业服务)版上线后,7月10号,服云android端V2·2版也正式上线.同web端V3.4一样,android端V2·2主要也是对企业服务功能模块进行全面的完善和升级,意在为企业用户带来更高效更便捷的安全服务.建议升级使用,地址:http://fuyun.safedog.cn/client.h