如何通过修改build.prop文件来修改Android 首选网络模式默认值

如何通过修改build.prop文件来修改Android 首选网络模式默认值,第1张

修改系统属性:rotelephonydefault_network

修改说明:

可连续给两个值(如4,1),卡1用的是4,卡2用的是1。数字代表的意义见下方的相关代码片段。

相关源码位置:

frameworks/base/telephony/java/com/android/internal/telephony/RILConstantsjava

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelperjava

相关代码片段:

/ NETWORK_MODE_ See rilh 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 NETWORK_MODE_TD_SCDMA_ONLY = 13; / TD-SCDMA only /

int NETWORK_MODE_TD_SCDMA_WCDMA = 14; / TD-SCDMA and WCDMA /

int NETWORK_MODE_TD_SCDMA_LTE = 15; / TD-SCDMA and LTE /

int NETWORK_MODE_TD_SCDMA_GSM = 16; / TD-SCDMA and GSM /

int NETWORK_MODE_TD_SCDMA_GSM_LTE = 17; / TD-SCDMA,GSM and LTE /

int NETWORK_MODE_TD_SCDMA_GSM_WCDMA = 18; / TD-SCDMA, GSM/WCDMA /

int NETWORK_MODE_TD_SCDMA_WCDMA_LTE = 19; / TD-SCDMA, WCDMA and LTE /

int NETWORK_MODE_TD_SCDMA_GSM_WCDMA_LTE = 20; / TD-SCDMA, GSM/WCDMA and LTE /

int NETWORK_MODE_TD_SCDMA_CDMA_EVDO_GSM_WCDMA = 21; /TD-SCDMA,EvDo,CDMA,GSM/WCDMA/

int NETWORK_MODE_TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA = 22; / TD-SCDMA/LTE/GSM/WCDMA, CDMA, and

EvDo /

复制代码

// Set the preferred network mode

int defaultNetworkType = RILConstantsPREFERRED_NETWORK_MODE;

int numPhones = MSimTelephonyManagergetDefault()getPhoneCount();

String networkMode = SystemPropertiesget("rotelephonydefault_network");

if (networkMode != null) {

if (numPhones == MSimConstantsMAX_PHONE_COUNT_SINGLE_SIM) {

loadSetting(

stmt,

SettingsGlobalPREFERRED_NETWORK_MODE,

MSimTelephonyManagergetTelephonyProperty(

"rotelephonydefault_network", 0,

IntegertoString(defaultNetworkType)));

} else {

loadSetting(stmt, SettingsGlobalPREFERRED_NETWORK_MODE, networkMode);

}

} else {

StringBuilder sb = new StringBuilder(defaultNetworkType);

for (int i = 0; i < numPhones - 1; i++) {

sbappend(",");

sbappend(RILConstantsNETWORK_MODE_GSM_ONLY);

}

loadSetting(stmt, SettingsGlobalPREFERRED_NETWORK_MODE, sbtoString());

由身份或持有的令牌确认享有的权限,登录过程实质上的目的也是为了确认权限。

Cookie是客户端给服务器用的,setCookie是服务器给客户端用的。cookie由服务器处理,客户端负责存储

客户端发送cookie:账户和密码

服务端收到后确认登录setCookie:sessionID=1,记下sessionID

客户端收到sessionID后记录,以后请求服务端带上对比记录下sessionID,说明已经登录

会话管理:登录状态,购物车

个性化:用户偏好,主题

Tracking:分析用户行为

XXS:跨脚本攻击,及使用JavaScript拿到浏览器的cookie之后,发送到自己的网站,以这种方式来盗用用户Cookie。Server在发送Cookie时,敏感的Cookie加上>

若是您使用的是vivo手机,手机不能使用4G网络的可以按照以下方法进行排查:

1、手机需使用与支持的4g网络所对应的运营商SIM卡;

2、查询使用的SIM卡是否开通了4g网络套餐;

3、确认当地是否覆盖SIM卡所属运营商的4g网络,还可更换网络环境观察看看;

4、查看手机是否启用4G网络模式,进入手机设置--移动网络/双卡与移动网络--网络模式中查看,部分机型需在拨号盘输入:##2288## 查看;

5、将数据网络关闭,等待几分钟后再重新打开观察;

6、进入设置--移动网络/双卡与移动网络--接入点(APN),选择“重置为默认设置”,然后关机重启试试;

7、将手机网络重置一下,先将网络设置为2G,待网络稳定后,再设置为4G,然后重启手机即可。

电脑连接局域网中的服务器

1、修改hosts,在hosts中新增一个域名。如:101251113apicleartokencom具体 *** 作:1、电脑中的hosts一般在C:\Windows2Fiddler如何让你的android模拟器连接上你电脑的网络第一步:在命令行(就是开始——运行——输入cmd)模式下输入adbshell命令一般会报两种错误,一是“adb不是内部命令

局域网,网络种类,覆盖范围一般是方圆几千米之内,其具备的安装便捷、成本节约、扩展方便等特点使其在各类办公室内运用广泛。局域网可以实现文件管理、应用软件共享、打印机共享等功能,在使用过程当中,通过维护局域网网络安全,能够有效地保护资料安全,保证局域网网络能够正常稳定的运行。

1 存储在SIM卡中的mcc/mnc

这个值是存储在SIM卡IMSI(国际移动用户识别码 International Mobile Subscriber Identification Number)中的固定值,不会被更改。有以下两种途径可以取得。

11 通过TelephonyManager获得

在TelephonyManager中有如下方法:

//TelephonyManagerjava

/

Returns the MCC+MNC (mobile country code + mobile network code) of the

provider of the SIM for a particular subscription 5 or 6 decimal digits

Availability: SIM state must be {@link #SIM_STATE_READY}

@see #getSimState

@param subId for which SimOperator is returned

@hide

/

public String getSimOperatorNumeric(int subId) {

int phoneId = SubscriptionManagergetPhoneId(subId);

return getSimOperatorNumericForPhone(phoneId);

}

/

Returns the MCC+MNC (mobile country code + mobile network code) of the

provider of the SIM for a particular subscription 5 or 6 decimal digits

@param phoneId for which SimOperator is returned

@hide

/

public String getSimOperatorNumericForPhone(int phoneId) {

return getTelephonyProperty(phoneId,

TelephonyPropertiesPROPERTY_ICC_OPERATOR_NUMERIC, "");

}

↓↓↓

由于subId并不固定,是根据放进sim卡槽时候的计数来统计的,但是如果相关类中有SubscriptionInfo对象的话,是可以直接取到的:

int subId = mSubscriptionInfogetSubscriptionId();

另一种phoneId则比较简单了,它与sim卡数量有关,单卡时为0,双卡时根据sim slot位置分别取0和1。

12 通过SubscriptionInfo获得

在有些特殊情况下,比如SIM卡处于PIN码LOCK状态时,11所提到的方法是取不到的,这个时候只能通过SubscriptionInfo来取。

// SubscriptionInfojava

/

@return the MCC

/

public int getMcc() {

return thismMcc;

}

/

@return the MNC

/

public int getMnc() {

return thismMnc;

}

注意,由于这个方法取到的mcc/mnc均为int值,比如中国联通的“46001”,则有mcc为“460”,mnc为“1”,与固定String字符串进行匹配比对的话,需要先将String拆分为两部分后分别强转成int型后才可进行比对。

2 SIM卡注册网络的mcc/mnc

非漫游情况下,注册网络的mcc/mnc就是SIM卡中存储的。但是如果你的SIM卡在其他国家并没有该运营商的基站,只能通过漫游到其他运营商的网络上维持服务时,注册网络的mcc/mnc对应的就是该运营商的值,与SIM卡无关了。

21 通过ServiceState获得

熟悉Android Telephony流程的朋友应该都知道,CS、PS域的注册状态,漫游状态,运营商名字的显示,网络模式等都是用模板类ServiceStatejava来保存的。

SystemUI中有不少类都注册了PhoneStateListener这个callback,用来时刻关注设备的一些telephony相关状态,当网络服务状态有变化时,会回调其onServiceStateChanged(ServiceState serviceState)方法,这样我们就可以直接从ServiceState里面取了。

// ServiceStatejava

/

Get current registered operator numeric id

In GSM/UMTS, numeric format is 3 digit country code plus 2 or 3 digit

network code

@return numeric format of operator, null if unregistered or unknown

/

/

The country code can be decoded using

{@link comandroidinternaltelephonyMccTable#countryCodeForMcc(int)}

/

public String getOperatorNumeric() {

return mVoiceOperatorNumeric;

}

/

Get current registered voice network operator numeric id

@return numeric format of operator, null if unregistered or unknown

@hide

/

public String getVoiceOperatorNumeric() {

return mVoiceOperatorNumeric;

}

/

Get current registered data network operator numeric id

@return numeric format of operator, null if unregistered or unknown

@hide

/

public String getDataOperatorNumeric() {

return mDataOperatorNumeric;

}

一般来说,voice语音业务和data数据业务对应的OperatorNumeric是一样的,所以getOperatorNumeric()默认取了voice的。

22 通过监听Telephony广播获得

由于该Intent action为MTK新增的,故以下方法介绍均以MTK源码为基础。

上面的方法必须在voice与data均注册成功的前提下才能获得,但是在一些很特殊的环境下,比如SIM卡虽然漫游上了某个其他运营商的网络,但由于两家运营商之间并没有协议,导致无法注册上服务,此时voice和data取得的OperatorNumeric均为空的。

在MTK源码中,MtkServiceStateTracker在处理PLMN String即mcc/mnc时,会通过action为“TelephonyIntentsACTION_LOCATED_PLMN_CHANGED”的广播,把它作为extra参数传递出去。

// MtkServiceStateTrackerjava

private void updateLocatedPlmn(String plmn) {

if (((mLocatedPlmn == null) && (plmn != null)) ||

((mLocatedPlmn != null) && (plmn == null)) ||

((mLocatedPlmn != null) && (plmn != null) && !(mLocatedPlmnequals(plmn)))) {

log("updateLocatedPlmn(),previous plmn= " + mLocatedPlmn + " ,update to: " + plmn);

Intent intent = new Intent(TelephonyIntentsACTION_LOCATED_PLMN_CHANGED);

if (TelephonyManagergetDefault()getPhoneCount() == 1) {

intentaddFlags(IntentFLAG_RECEIVER_REPLACE_PENDING);

}

intentputExtra(TelephonyIntentsEXTRA_PLMN, plmn);

mPhonegetContext()sendStickyBroadcastAsUser(intent, UserHandleALL);

}

mLocatedPlmn = plmn;

}

由此可知,只要在需要取的类中,注册一个监听“ACTION_LOCATED_PLMN_CHANGED”的BroadcastReceiver就行了,在设备开机之后便可以第一时间拿到漫游网络的mcc/mnc值,具体如下:

private BroadcastReceiver mReceiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

final String action = intentgetAction();

if (actionequals(TelephonyIntentsACTION_LOCATED_PLMN_CHANGED)) {

mLocatedPlmn = intentgetStringExtra(TelephonyIntentsEXTRA_PLMN);

// mLocatedPlmn即为漫游网络的mcc/mnc值,接下来用它 *** 作即可

以上就是关于如何通过修改build.prop文件来修改Android 首选网络模式默认值全部的内容,包括:如何通过修改build.prop文件来修改Android 首选网络模式默认值、android wifi正在连接的状态广播、Android网络请求知识(三)授权,TCP/IP,HTTPS建立过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9486176.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存