sim卡相关总结

首先获取相关的服务

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

SubscriptionManager subscriptionManager = SubscriptionManager.from(context);

 

查看当前是否开启移动网络

telephonyManager.getDataEnabled();

 

获取sim卡信息list
List list = subscriptionManager.getActiveSubscriptionInfoList();

 

获取sim卡移动网络类型:
int type = telephonyManager.getDataNetworkType()

网络类型
NETWORK_TYPE_UNKNOWN 0
NETWORK_TYPE_GPRS 1
NETWORK_TYPE_EDGE 2
NETWORK_TYPE_UMTS 3
NETWORK_TYPE_CDMA 4
NETWORK_TYPE_EVDO_0 5
NETWORK_TYPE_EVDO_A 6
NETWORK_TYPE_1xRTT 7
NETWORK_TYPE_HSDPA 8
NETWORK_TYPE_HSUPA 9
NETWORK_TYPE_HSPA 10
NETWORK_TYPE_IDEN 11
NETWORK_TYPE_EVDO_B 12
NETWORK_TYPE_LTE 13
NETWORK_TYPE_EHRPD 14
NETWORK_TYPE_HSPAP 15
NETWORK_TYPE_GSM 16
NETWORK_TYPE_TD_SCDMA 17
NETWORK_TYPE_IWLAN 18
NETWORK_TYPE_LTE_CA 19

 

卡槽下标获取,slotIndex为0表示卡槽1,slotIndex为1表示卡槽2:

slotIndex = ((SubscriptionInfo)list.get(i)).getSimSlotIndex();

 

subId是通过卡槽下标为参数来获取的,后续部分方法要使用:

subId = subscriptionManager.getSubId(slotIndex);

 

判断sim卡是否开启数据:
telephonyManager.getDataEnabled(int subId);

 

判断卡槽是否插入sim卡:
int simState = telephonyManager.getSimState(int slotIndex)。

如果simState = 5,说明sim卡已经就绪
如果simState = 1, 说明该卡槽未插入sim卡。

 

开启或关闭移动数据:
telephonyManager.setDataEnabled(boolean enable);

 

开启或关闭指定sim卡的移动数据:
telephonyManager.setDataEnabled(int subId, boolean enable)

你可能感兴趣的:(Android排错篇)