Запросить использование данных для обеих сим по отдельности с помощью NetworkStatsManager

Мне нужно запросить данные об использовании обеих сим-карт в мобильных телефонах с двумя сим-картами, используя NetworkStatsManager для всего устройства, так как необходимо сообщить об использовании данных за 1 день для каждой сим-карты. Следовательно, мне нужно использовать метод querySummaryForDevice(). Мне нужно передать идентификатор подписки, который, я считаю, должен отличаться для каждой симки. Я пытался использовать решение Subscription Manager, упомянутое здесь: Android: Как получить SIM-ID обеих SIM-карт в Android? Каким-то образом получение идентификатора подписки отсюда возвращает 0 байтов в качестве используемых данных. На данный момент я использую TelephonyManager для получения идентификатора подписки.

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.

Теперь используйте отражение, чтобы вызвать метод getSubscriberId(int) в классе TelephonyManager со значением, полученным на предыдущем шаге. Возвращаемое значение для этого метода потребует идентификатор подписчика для sim, который можно использовать в методе querySummaryForDevice() для получения данных об использовании этого sim.

Другие вопросы по тегам