首页 > 解决方案 > 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))
    }

标签: androidkotlinandroid-trafficstats

解决方案


根据文档:

从 Build.VERSION_CODES.N 开始,这将仅报告调用 UID 的流量统计信息。出于隐私原因,它将为所有其他 UID 返回 UNSUPPORTED。要访问属于其他 UID 的历史网络统计信息,请使用 NetworkStatsManager。

当得到你不期望的返回值时,总是首先检查最新的文档。


推荐阅读