-1

我正在制作一个 android 应用程序,并希望向用户显示我在他们的手机上占用了多少数据空间。

我目前正在获取数据库文件和打包应用程序文件的大小,并将它们添加在一起,但它与 android 应用程序设置中显示的统计数据相去甚远。

我想知道是否有办法获取设置应用程序中显示的数据: 在此处输入图像描述

作为我目前的做法:

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

已关闭。

4

1 回答 1

0

尝试获取应用程序的根目录递归获取其所有目录树的大小

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);
}

文件夹大小():

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;
}
于 2016-08-02T21:37:21.470 回答