gpt4 book ai didi

android - 如何使用新的 NetworkStatsManager 类获取所有 UID 的数据使用报告

转载 作者:搜寻专家 更新时间:2023-11-01 09:43:33 25 4
gpt4 key购买 nike

我正在构建一个数据管理器应用,它需要通过移动和 wifi 接口(interface)报告每个应用的数据使用情况。

在尝试使用方法“NetworkStatsManager.querySummary”时,我只获得了一些 UID 的使用报告,但不是全部。而 API documentation因为这个方法确实说了

Result filtered to include only uids belonging to calling user

我不清楚哪些 UID 属于调用用户,哪些不属于。请帮助我了解其中的区别以及如何使用这个新的“NetworkStatsManager”类获取所有 UID 的数据使用报告。

最佳答案

可以获取设备的摘要。只需使用另一种方法:android.app.usage.NetworkStatsManager#querySummaryForDevice .这是示例用法:

无线网络:

NetworkStats.Bucket bucket;
try {
bucket = networkStatsManager.querySummaryForDevice(ConnectivityManager.TYPE_WIFI,
"",
0,
System.currentTimeMillis());
} catch (RemoteException e) {
return -1;
}

手机:

public long getAllTxBytesMobile(Context context) {
NetworkStats.Bucket bucket;
try {
bucket = networkStatsManager.querySummaryForDevice(ConnectivityManager.TYPE_MOBILE,
getSubscriberId(context, ConnectivityManager.TYPE_MOBILE),
0,
System.currentTimeMillis());
} catch (RemoteException e) {
return -1;
}
return bucket.getTxBytes();
}

private String getSubscriberId(Context context, int networkType) {
if (ConnectivityManager.TYPE_MOBILE == networkType) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return tm.getSubscriberId();
}
return "";
}

要获取 Rx 或 Tx 字节,只需调用:

bucket.getRxBytes();
bucket.getTxBytes();

做了 sample Github repo演示用法。

关于android - 如何使用新的 NetworkStatsManager 类获取所有 UID 的数据使用报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38783836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com