皮皮网

【体重秤源码】【android运营级源码】【hwloc源码制作rpm】TelephonyManager 源码

2024-11-20 18:39:05 来源:触摸自瞄源码

1.模安卓拟器怎么修改imei
2.Android获取硬件设备信息
3.SystemUI如何获得SIM卡相关的mcc/mnc值

TelephonyManager 源码

模安卓拟器怎么修改imei

       imei是源码系统硬件标识

       无法修改的,除非你去改android系统的源代码

       TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);

       TelephonyMgr.getDeviceId(); //这里就是获取IMEI,你只能去改系统代码,把这里的回返值改成固定的

Android获取硬件设备信息

       获取Android硬件设备信息主要通过Build类和TelephonyManager类实现,同时可结合反射获取SystemProperties类的源码隐藏API和特定ROM独有的数据。以下是源码一些关键的获取项及其方法:

       1. 序列号和IMEI: 使用getDeviceId方法获取设备序列号,通过getString方法和android_id属性获取IMEI。源码例如,源码序列号为"",源码体重秤源码IMEI为"bcbcfaa5b"。源码

       2. 手机号码: 使用getLine1Number方法获取手机号码,源码示例为""。源码

       3. 手机卡序列号: 通过getSimSerialNumber方法获取手机卡序列号,源码例如"";IMSI(国际移动用户识别码)通过getSubscriberId方法获取,源码示例为""。源码

       4. 手机卡国家信息: 使用getSimCountryIso方法获取手机卡所在国家的源码android运营级源码ISO代码,如"cn"。源码

       5. 运营商信息: 包括运营商ID(getSimOperator)、源码运营商名字(getSimOperatorName)和运营商国家代码(getSimOperator)。

       6. 手机类型和固件版本: 使用getPhoneType方法获取手机类型,getRadioVersion方法获取固件版本,示例为"MOLY.WR8.W.MD.TG.MP.V1.P,hwloc源码制作rpm // :"。

       7. 系统版本和硬件信息: 通过android.os.Build类获取系统版本字符串(如"4.4.4")、API级别(SDK)、品牌、型号、ID、DISPLAY信息、文本内容搜索源码产品名、制造商、设备名、硬件名称、指纹(设备唯一标识)等。

       8. 串口序列号和设备版本类型: 使用SERIAL获取串口序列号,txt怎么变成源码TYPE获取设备版本类型,TAGS获取设备标签,HOST获取设备主机地址,USER获取设备用户名,codename获取系统开发代号,build_incremental获取系统源代码控制值。

       9. 屏幕信息: 使用Display类获取屏幕密度(density)、屏幕密度(densityDpi)、内置分辨率(getWidth和getHeight)、x像素和y像素、字体缩放比例(scaledDensity)等。

       . 蓝牙和WiFi信息: 使用WIFI相关方法获取蓝牙地址(getAddress)、无线路由器名(getSSID)、无线路由器地址(getBSSID)和内网ip(getIpAddress)等。

       请注意,获取某些信息,如手机号码,可能需要额外的用户交互或权限,而非直接通过API实现。

SystemUI如何获得SIM卡相关的mcc/mnc值

        SystemUI获得SIM卡相关的mcc/mnc值,分两种情况讨论

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

        在TelephonyManager中有如下方法:

        ↓↓↓

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

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

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

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

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

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

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

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

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

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