2011-01-05 11 views
4

사용자가 설치된 앱 세트를 선택하고 '캐시 지우기'버튼이있는 기본 설정 -> 적용 설정 화면을 사용하여 수동으로 할 수있는 것처럼 데이터 캐시를 지울 수있는 유틸리티를 작성하고 싶습니다.앱 캐시를 프로그래밍 방식으로 지우시겠습니까?

각 앱에 캐시 된 데이터의 양에 액세스하고 이러한 캐시를 프로그래밍 방식으로 지우려면 어떻게해야합니까?

답변

2

일반 SDK 응용 프로그램에는 파일을 해킹 할 수있는 것 이상으로 다른 응용 프로그램의 캐시에 액세스 할 수있는 권한이 없습니다.

응용 프로그램이 루트로 실행되는 경우 루트 폰에서 가능할 수 있습니다.이 경우 응용 프로그램의 패키지 이름을 기반으로 수동으로 경로를 만들어야합니다.

+0

좋습니다. 감사합니다. 캐시 관리에 도움이되는 유틸리티를 보았지만 루트 액세스가 필요합니다. 적어도 각 앱의 캐시가 차지하는 공간을 나열하는 방법이 있습니까? 특정 앱에 대해 '캐시 지우기'버튼을 사용하여 설정 활동으로 이동할 수있는 방법이 있습니까? – robosheep

+0

@robosheep : "각 앱의 캐시 용량이 얼마나되는지를 최소한 나열 할 수있는 방법이 있습니까?" - 내가 아는 것은 아니지만, 나는 정확하게 그것을 찾지 못했습니다. "특정 앱에 대해 캐시 지우기 버튼을 사용하여 설정 활동으로 이동할 수있는 방법이 있습니까? - http://developer.android.com/reference/android/provider/Settings를 시도하십시오.html # ACTION_APPLICATION_DETAILS_SETTINGS (참고 : Android 2.3 신규) – CommonsWare

6

여기에 주어진 대답은 거짓입니다. 프로그래밍 방식의 모든 앱 캐시 기능이있는 마켓 애플 리케이션이 있습니다. 또한 다음은 문서에 있습니다

public static final String CLEAR_APP_CACHE 

는 이후 : 안드로이드 의 API 레벨 1 장치의 모든 설치된 응용 프로그램의 캐시를 삭제하는 응용 프로그램을 할 수 있습니다. 상수 값 :

android.permission.CLEAR_APP_CACHE 

참고 "모든 설치된 응용 프로그램 부분", 당신은 표준 사용자 권한을 넘어 어떤 루트 액세스 또는 특수 권한이 ​​필요하지 않는 것이 사실.

저장소 데모 전화에서 24 시간마다 모든 앱 캐시를 지우는 방법에 대한 요구 사항이 있기 때문에 여기에 게시하고 올바르게 사용하는 방법을 찾으려고합니다. 솔루션의 일부가이 권한을 얻는 것을 알고 있으며 장치에 설치된 모든 응용 프로그램을 찾는 방법을 알고 있으며 실제로 캐시를 삭제할 수있는 작업을하고 있습니다. 내 문제는 파일을 포함하지 않는 것으로 읽은 다른 응용 프로그램 캐시입니다 (내용이 있음에도 불구하고), 목록 파일을 만들 수있는 읽기 권한이 없기 때문에 의심 스럽습니다.

+0

@tim보다 모든 앱에 대한 캐시 지우기 코드를 게시 할 수 있습니까? 그리고 공개 된 메모리 량을 얻을 수 있습니까? – AkashG

0

당신은 당신의 매니페스트에이 권한이 있어야합니다 모든 프로그램의 캐시를 지우려면 패키지 매니저를 사용하여 그 후

<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/> 

을 :

PackageManager pm = getPackageManager(); 
// Get all methods on the PackageManager 
Method[] methods = pm.getClass().getDeclaredMethods(); 
for (Method m : methods) { 
    if (m.getName().equals("freeStorage")) { 
     // Found the method I want to use 
     try { 
      long desiredFreeStorage = 8 * 1024 * 1024 * 1024; // Request for 8GB of free space 
      m.invoke(pm, desiredFreeStorage , null); 
     } catch (Exception e) { 
      // Method invocation failed. Could be a permission problem 
     } 
     break; 
    } 
} 

이 요청이 있도록 안드로이드 충분히 명확한 캐시 파일 8GB 무료입니다. 이 숫자를 충분히 높게 설정하면 원하는 것을 얻을 수 있습니다 (Android는 캐시의 모든 파일을 삭제합니다). freeStorage()으로 전화하면 저장 용량 (이 경우 8GB)이 캐시 파일에 사용 가능한지 확인합니다. 그렇지 않은 경우 가장 오래된 파일을 먼저 삭제하여 응용 프로그램의 캐시 디렉토리에서 파일을 삭제하기 시작합니다. 삭제할 파일이 더 이상 없거나 요청한 저장 공간 (이 경우 8GB)을 확보 할 때까지 파일을 계속 삭제합니다.

관련 문제