android - 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))
}
解决方案
根据文档:
从 Build.VERSION_CODES.N 开始,这将仅报告调用 UID 的流量统计信息。出于隐私原因,它将为所有其他 UID 返回 UNSUPPORTED。要访问属于其他 UID 的历史网络统计信息,请使用 NetworkStatsManager。
当得到你不期望的返回值时,总是首先检查最新的文档。
推荐阅读
- javascript - Socket.io 客户端一次连接多个服务器
- excel - EXCEL VBA:根据值范围格式化现有数字单元格
- python - Pandas Resample Upsample 最后日期/数据边缘
- visual-studio-code - 有没有办法像在 Sublime Text 中一样修改每种语言的默认注释标签
- git - 尝试变基以更正属性过滤器,但由于“未分级更改”而无法
- vba - 过滤/排序后阻止Excel跳到顶部
- php - Wordpress 将 php 和 html 模板转换为简码
- powerpoint - 更改布局时如何防止对象/文本改变颜色?
- javascript - 关于 Toggle with same Class Javascript No jQuery
- html -
HTML/CSS - 即使有标签也能保持元素在同一行