| 維度 | 內部儲存 (getFilesDir/getCacheDir) | 外部儲存 (getExternalFilesDir/SD卡) |
|---|---|---|
| 權限 | 無需權限 (API 19+) | 需 WRITE_EXTERNAL_STORAGE (API 19-28),API 29+ 分區儲存 |
| 空間 | 較小 (系統分配) | 較大 (用戶可見) |
| 生命週期 | 應用解除安裝自動刪除 | 應用解除安裝**不刪除** (公共目錄) |
| 媒體掃描 | 不掃描 | **會被相冊/音樂掃描顯示** |
.nomedia,MediaScanner 會跳過該目錄。.dat、.bin 或無副檔名,降低被識別為媒體機率。getFilesDir(),僅大體積非敏感資源 (離線地圖、影片) 放外部儲存並加 .nomedia。它們儲存於 Android/data/com.tencent.mm/ (API 19+ 專屬外部目錄),**不屬於公共媒體目錄**,且內部有 .nomedia,MediaStore 不會索引。
File dir = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS); // /Android/data/pkg/files/Download
File nomedia = new File(dir, ".nomedia");
if (!nomedia.exists()) nomedia.createNewFile();
File saveFile = new File(dir, "resource.dat"); // 非媒體副檔名
// 或加密寫入