我试图在每个应用程序的基础上找出Android上的数据使用情况.像Android数据使用应用程序和配额/上限监视器小部件:永远不会收取额外的数据或再次上限!.
我查看了Stack Overflow问题如何在Android环境中检测数据使用情况.
但它并没有多大帮助.
ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo mInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo( mInfo );
List<RunningAppProcessInfo> listOfRunningProcess = activityManager.getRunningAppProcesses();
Log.d(TAG, "XXSize: " + listOfRunningProcess.size());
for (RunningAppProcessInfo runningAppProcessInfo : listOfRunningProcess) {
if (runningAppProcessInfo.uid > 1026)
{
Log.d(TAG, "ANS " + runningAppProcessInfo.processName +
" Id :" + runningAppProcessInfo.pid +
" UID: " + runningAppProcessInfo.uid);
}
}
Run Code Online (Sandbox Code Playgroud)
我按照Akos Cz的建议尝试了上面的代码.但是,与上面提到的不同,所有UID都是数字app_79.这样可以吗?
正如标题所说.我想知道特定应用在特定时间每秒使用的字节数.
也许我可以使用" netstat "命令?但如果是这样,我如何将其过滤到特定的应用/流程?
我还需要获得一些许可吗?
目前人们说使用TrafficStats.getUidRxBytes(packageInfo.uid),但是,从这里:https://developer.android.com/reference/android/net/TrafficStats.html#getUidRxBytes (int ),它表示不支持N,我应该使用NetworkStatsManager.有没有任何使用它的例子?
也许合并的解决方案?
编辑:我试图在Android N上使用NetworkStatsManager,但我失败了.我找不到任何关于如何使用它的示例,并且关于它的所有stackOverflow问题都是类似的,因为它无法很好地使用它.如果有人知道如何使用它,请写下来.
我需要获取上个月的数据使用情况统计信息。
有什么办法可以在android中明智地计算数据使用日期?
我使用TrafficStats类获取数据使用量,但是自设备启动以来,它通过给定的UID为我提供了设备的所有数据使用量。