【发布时间】:2019-08-15 03:41:07
【问题描述】:
我正在编写一个网络监视器应用程序。我想检测双卡手机中的哪个 SIM 卡启用了数据?
我已经为两张 SIM 卡尝试了 TelephonyManager.isDataEnabled() 方法。但该方法返回为两个 SIM 卡启用。相反,我应该启用一张 SIM 卡并禁用另一张。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
SubscriptionManager subManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> subscriptionInfoList = subManager.getActiveSubscriptionInfoList();
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
TelephonyManager mgr = telephonyManager.createForSubscriptionId(subscriptionInfoList.get(0).getSubscriptionId());
int isDataEnabledSIM1 = mgr.isDataEnabled()?1:0;
mgr = telephonyManager.createForSubscriptionId(subscriptionInfoList.get(1).getSubscriptionId());
int isDataEnabledSIM2 = mgr.isDataEnabled()?1:0;
Log.d(TAG, "isDataEnabledSIM1: "+isDataEnabledSIM1 + ", isDataEnabledSIM2="+isDataEnabledSIM2);
}
}
isDataEnabledSIM1 和 isDataEnabledSIM2 均返回 1,表示两个 SIM 卡上都启用了数据。这显然是不正确的,我只希望一张 SIM 卡为 1,另一张为 0。
【问题讨论】: