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

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