Android 沙盒機制限制應用僅能訪問自身私有目錄。**無法刪除其他應用的緩存或數據**,除非獲得 Root 權限或系統級簽名。
使用 Context.getCacheDir() 獲取緩存目錄,配合標準文件 I/O 刪除:
public void clearAppCache(Context context) {
File cacheDir = context.getCacheDir();
deleteRecursive(cacheDir);
}
private void deleteRecursive(File fileOrDirectory) {
if (fileOrDirectory.isDirectory()) {
for (File child : fileOrDirectory.listFiles()) {
deleteRecursive(child);
}
}
fileOrDirectory.delete();
}
getCacheDir():內部緩存,系統空間不足時可能自動清理。getExternalCacheDir():外部存儲緩存(需 WRITE_EXTERNAL_STORAGE 權限)。市面上所謂「清理大師」通常:
/sdcard/DCIM/.thumbnails、/sdcard/Tencent/MicroMsg 等)刪除已知應用的緩存。StorageManager.freeCache()(需系統簽名)。/data/data/ 刪除各包緩存。普通 SDK 應用**無法實現全盤清理**。