-1

나는 안드로이드 앱을 만들고있어 휴대 전화에 데이터가 얼마나 많은 공간을 차지하고 있는지 사용자에게 표시하고 싶습니다.현재 안드로이드 애플리케이션이 차지하는 데이터 양은 어떻게 얻습니까?

현재 데이터베이스 파일 크기와 패키지 파일을 받고 함께 추가하고 있지만 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; 
} 
관련 문제