使用NetworkStatsManager分别查询两个SIM卡的数据使用情况

时间:2018-10-01 15:29:03

标签: android networkstatsmanager android-data-usage

我需要使用整个设备的NetworkStatsManager查询双SIM手机中两个SIM卡的数据使用情况,因为需要报告每个SIM卡的1天数据使用情况。因此,我需要使用querySummaryForDevice()方法。我需要传递订阅ID,我认为每个ID都应该有所不同。我尝试使用此处提到的Subscription Manager解决方案:Android: How to get SIM-ID of both SIMs in Android? 不知何故,从此处获取订阅ID会返回0字节作为使用的数据。到目前为止,我正在使用TelephonyManager来获取订阅ID。

1 个答案:

答案 0 :(得分:1)

SubscriptionManager subscriptionManager = (SubscriptionManager) ControlApplication.getControlApplicationContext().getSystemService(
Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> subInfoList = subscriptionManager.getActiveSubscriptionInfoList();
int id = subInfoList.get(i). getSubscriptionId();

//Here, i is index in the list.

现在使用反射在TelephonyManager类中调用在上面步骤中获得的值的getSubscriberId(int)方法。此方法的返回值将是sim的必需订户ID,可在querySummaryForDevice()方法中使用该ID以获得该sim的数据使用量。使用反射代码:

Class<?> c = Class.forName("android.telephony.TelephonyManager");
Method m = c.getMethod("getSubscriberId", int.class);
Object o = m.invoke(telephonyManagerInstance, id);
subscriberId = (String) o;