¿Cómo muestro programáticamente el uso de datos de todas las aplicaciones?

En Android 4.0 en adelante, tenemos opciones de control de uso de datos en el teléfono. Por favor, consulte la captura de pantalla adjunta para una mayor comprensión.

http://developer.android.com/about/versions/android-4.0-highlights.html

Ahora tengo algún requisito para verificar estas cosas (uso de todos los datos de la aplicación en un período de tiempo específico / días específicos) desde mi aplicación. ¿Cómo puedo conseguir esto? También estoy usando la siguiente clase para detalles de uso de red.

http://developer.oesf.biz/em/developer/reference/eggplant/android/net/NetworkStatsHistory.html

Por favor, consulte las imágenes de enlace a continuación. Necesito desarrollar el mismo tipo de aplicación.

http://developer.android.com/sdk/images/4.0/usage-all-lg.png

http://developer.android.com/sdk/images/4.0/usage-maps-lg.png

Gracias por compartir su código, pero necesito saber los datos utilizados por cada aplicación en lugar de todas las aplicaciones. Hasta ahora he observado en los enlaces que nadie habla sobre el uso de datos de aplicaciones individuales. Ya sé cómo mostrar las aplicaciones instaladas en el dispositivo. Ahora me gustaría saber cuáles son los datos utilizados por todas y cada una de las aplicaciones.

Estoy usando el siguiente código para la lista de aplicaciones instaladas en el dispositivo.

private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {
    ArrayList<PInfo> res = new ArrayList<PInfo>();

    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);

    for (int i=0; i<packs.size(); i++) {
        PackageInfo p = packs.get(i);
        if ((!getSysPackages) && (p.versionName == null)) {
            continue ;
        }
        PInfo newInfo = new PInfo();
        newInfo.setAppname(p.applicationInfo.loadLabel(getPackageManager()).toString());
        newInfo.setPname(p.packageName);
        newInfo.setVersionName(p.versionName);
        newInfo.setVersionCode(p.versionCode);
        newInfo.setIcon(p.applicationInfo.loadIcon(getPackageManager()));

        res.add(newInfo);
    }
    return res;
}

¿Cómo sé cuáles son los datos utilizados por cada aplicación?

En realidad, necesito una solución que ofrezca el uso de datos de las aplicaciones en un período de tiempo determinado, es decir, entre dos días.

Respuestas a la pregunta(3)

Su respuesta a la pregunta