1)我正在查看牛油糖,我已经有了以下权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions"/>2) Code Snipet
public long getPackageRxBytesWifi() {
NetworkStats networkStats = null;
NetworkStats.Bucket bucket;
long totalData= 0;
try {
networkStats = networkStatsManager.queryDetailsForUid(
ConnectivityManager.TYPE_WIFI,
"",
1488441600 ,
1488902400 ,
packageUid);
} catch (RemoteException e) {
e.printStackTrace();
}
do {
bucket = new NetworkStats.Bucket();
networkStats.getNextBucket(bucket);
Log.i("abc", "Start Time Stamp: " + bucket.getStartTimeStamp());
Log.i("abc", "End Time Stamp: " + bucket.getEndTimeStamp());
totalData= totalData+ bucket.getRxBytes() + bucket.getTxBytes();
}while (networkStats.hasNextBucket());
return totalData;3)当我给出间隔开始时间-0结束时间- System.currentTimeMillis()时,得到正确的数据。但是当我给出其他时间间隔开始时间- 1488441600 (2月2日)结束时间- 1488902400 (7月11日;30)时,上面的方法返回0。并且bucket.getEndTimeStamp()和bucket.getStartTimeStamp()在日志中打印为0。任何人知道如何从上面的查询中获取特定时间间隔的数据,请纠正我哪里做错了。
发布于 2017-03-24 22:58:11
在我看来,您实际上是以秒为单位传递的,而实际上应该是以毫秒为单位。下面我已经将你的时间转换成毫秒。你能试着把你的代码调整成下面的代码吗?
try {
networkStats = networkStatsManager.queryDetailsForUid(
ConnectivityManager.TYPE_WIFI,
"",
1488441600000L ,
1488902400000L ,
packageUid);
} catch (RemoteException e) {
e.printStackTrace();
}https://stackoverflow.com/questions/42663555
复制相似问题