如何使用 NetworkStatusManager 或 TrafficStat 在 Android 中获取网络共享和移动热点数据使用情况

How to get Tethering and Mobile Hotspot data usage in Android using NetworkStatusManager or TrafficStat

我有一个 Android 应用程序,它通过 NetworkStatusManager 显示每个应用程序的数据使用情况,但我无法获取网络共享和移动热点的数据使用情况。我应该怎么做?

您需要通过 UID 查询并传入网络共享 UID:android.app.usage.NetworkStats.Bucket.UID_TETHERING 如下所示:

networkStatsManager.queryDetailsForUid(ConnectivityManager.TYPE_MOBILE,
    subscriberId, startDate, endDate, 
    android.app.usage.NetworkStats.Bucket.UID_TETHERING);

我所做的是从这个文件中获取数据

/sys/class/net/<界面>/statistics/tx_bytes

/sys/class/net/<界面>/statistics/tr_bytes

然后我使用 sharedpreference 保存了这些值,我还编写了一些代码来获取新值并将其添加到保存的值中。

我进行了大量研究,但使用 UID_TETHERING 的 queryDetailsForUid 从未奏效

接口是 wlan 和 wwan