-1

Ich mache eine Android-App und möchte dem Benutzer anzeigen, wie viel Platz ich auf ihrem Telefon mit Daten aufnehme.Wie bekomme ich die Menge an Daten, die von der aktuellen Android-Anwendung genutzt werden?

Ich bekomme derzeit die Größe der Datenbankdatei und Paket-Anwendungsdatei, und fügt sie zusammen, aber es ist nicht in der Nähe der Statistiken in den Android App-Einstellungen angezeigt.

Ich frage mich, ob es einen Weg gibt, um die Daten in den Einstellungen app angezeigt zu bekommen: enter image description here

als meine aktuelle Ansatz:

long dbsize = DAL.Repository.getDBSizeinKB(); // is 18 MB 
ApplicationInfo appinfo = a.PackageManager.GetApplicationInfo(a.ApplicationInfo.PackageName, 0); 
long appsize = new FileInfo(appinfo.SourceDir).Length/1000; // 4MB 
string spaceUsed = ""; 
long totalsize = dbsize + appsize; 
spaceUsed = totalsize.ToString() + " kB"; 
if (totalsize >= 1000) 
    spaceUsed = (totalsize/1000).ToString() + " MB"; 
sizeView.Text = "Space used: " + spaceUsed; // 22MB 

ausgeschaltet ist.

Antwort

0

Versuchen getting the root directory of your app und getting the size of all its directory tree recursively:

PackageManager m = getPackageManager(); 
String s = getPackageName(); 
long size; 
try { 
    PackageInfo p = m.getPackageInfo(s, 0); 
    s = p.applicationInfo.dataDir; 
    File directory = new File(s); 
    size = folderSize(directory); 
} catch (PackageManager.NameNotFoundException e) { 
    Log.w("yourtag", "Error Package name not found ", e); 
} 

folder():

public static long folderSize(File directory) { 
    long length = 0; 
    for (File file : directory.listFiles()) { 
     if (file.isFile()) 
      length += file.length(); 
     else 
      length += folderSize(file); 
    } 
    return length; 
}