私は Android 6.0 用のアプリを作成しています。新しいクラス NetworkStatsManager を使用してモバイル データの使用状況を取得したいと考えています。
マニフェストに必要なすべての権限を追加し、権限のランタイムを必要とします。
メソッドを呼び出すと:
bucket = networkStatsManager.querySummaryForDevice(ConnectivityManager.TYPE_WIFI, "", fromDate.getTime(), toDate.getTime());
WIFI の使用に適した値を返します。
しかし、TYPE_WIFI を TYPE_MOBILE に置き換えると、結果は常に 0 になります。
NetworkStats.Bucket bucket = null;
try {
bucket = networkStatsManager.querySummaryForDevice(ConnectivityManager.TYPE_MOBILE, "", fromDate.getTime(), toDate.getTime());
if(bucket == null){
Log.i("Info", "Error");
}else{
Log.i("Info", "Total: " + (bucket.getRxBytes() + bucket.getTxBytes()));
}
} catch (RemoteException e) {
e.printStackTrace();
}