-1

我正在製作一個android應用程序,並希望向用戶顯示我使用數據在手機上佔用了多少空間。如何獲取當前android應用程序佔用的數據量?

我目前正在獲取數據庫文件的大小,並打包應用程序文件,並將它們添加到一起,但它沒有位於android應用程序設置中顯示的統計數據附近。

我不知道是否有一種方式來獲得在設置應用程序中顯示的數據: enter image description here

因爲我目前的做法:

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 

關閉。

回答

0

嘗試getting the root directory of your appgetting 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); 
} 

folderSize():

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; 
} 
相關問題