recived = TrafficStats.getUidRxBytes(uid);
send = TrafficStats.getUidTxBytes(uid);
TrafficStats.getMobileRxBytes();
TrafficStats.getMobileTxBytes();
TrafficStats.getTotalRxBytes();
TrafficStats.getTotalTxBytes();
我有应用程序ID,我可以获得该应用程序数据使用但我无法获得更详细的信息,如使用wifi和网络的数据使用。我想在设备中单独找到所有已安装的应用程序。我怎么能找到那个。?我已经尝试了很多东西,但没有得到任何解决方案。
答案 0 :(得分:5)
我认为您应该使用替代方式,通过UID获取流量,例如 - getUidRxPackets(int uid)
也很有用(如何获取UID):( How to get all apps installed on android phone)
编辑:
你能告诉我如何判断wifi和数据的使用量 移动。??
有一个很好的答案 - android statistic 3g traffic for each APP, how?看他的逻辑。
答案 1 :(得分:2)
不幸的是,从API级别19开始,没有公共API可以获取该信息;您已经列出了公开可用的TrafficStats
API。 Android使用内部API来做到这一点,所以除非你想要走这条路(这是一个非常糟糕的想法并且谷歌非常劝阻),你现在运气不好。
修改强>:
如果您坚持使用内部API并在各种API版本中冒险破坏代码,请参阅以下链接并确保彻底阅读:
Recompiling Android SDK to use hidden and internal APIs
Recompiling Android SDK for Gingerbread and later
实施此功能后,此文件将为您提供最大的帮助:
packages/apps/Settings/src/com/android/settings/fuelgauge/BatteryStatsHelper.java
您必须从文件中复制大量代码或查找processAppUsage()
函数并提取您需要的任何内容。特别是,寻找这些行:
// Add cost of wifi traffic
final long wifiRx = u.getNetworkActivityCount(NETWORK_WIFI_RX_BYTES, mStatsType);
final long wifiTx = u.getNetworkActivityCount(NETWORK_WIFI_TX_BYTES, mStatsType);
最后一点说明:Android JUST在KitKat(API 19)中更改了此代码,并且可能在将来再次更改此代码。我不能强调一旦他们决定再次改变,这会破坏你的应用程序。