try{
final NetworkStats stats = mNetworkStatsManager.querySummary(ConnectivityManager.TYPE_MOBILE, mTelephonyManager.getSubscriberId(), startTime, endTime);
long totalUsage = getTotalUsage(stats,uid);
Slog.d(TAG, packageName + " app used data = " + totalUsage);
return totalUsage > APP_USAGE_CRITICAL_DATA;
}catch (Exception e){
Slog.e(TAG, "Exception querying network detail.", e);
return false;
}
}
private static long getTotalUsage(NetworkStats stats,int uid) {
long bytes = 0L;
if (stats != null) {
final NetworkStats.Bucket bucket = new NetworkStats.Bucket();
while (stats.hasNextBucket() && stats.getNextBucket(bucket)) {
if (bucket.getUid() == uid) {
bytes += bucket.getRxBytes() + bucket.getTxBytes();
}
}
stats.close();
}else {
Slog.d(TAG, "stats = null");
}
return bytes;
}