TrafficStats.getUidRxBytes вернуть -1
Я пытаюсь получить общее количество Tx и Tr байт для установленных приложений, но всегда возвращает -1, за исключением моего приложения. Это мой код:
val pm = context.packageManager
val apps = HashMap<String, Long>()
for( app in pm.getInstalledApplications(0) ) {
Log.i(TAG, "app.packageName=${app.packageName} TrafficStats.getUidTxBytes(app.uid)=${TrafficStats.getUidTxBytes(app.uid)} TrafficStats.getUidRxBytes(app.uid)=${TrafficStats.getUidRxBytes(app.uid)}")
apps.put(app.packageName, TrafficStats.getUidRxBytes(app.uid)+TrafficStats.getUidTxBytes(app.uid))
}
1 ответ
Решение
Согласно документации:
Начиная с Build.VERSION_CODES.N это будет только сообщать статистику трафика для вызывающего UID. Он вернет UNSUPPORTED для всех других UID по соображениям конфиденциальности. Для доступа к исторической статистике сети, принадлежащей другим UID, используйте NetworkStatsManager.
При получении возвращаемых значений, которые вы не ожидаете, всегда сначала проверяйте самую последнюю документацию.