調用 Environment.getExternalStorageDirectory() 返回 /storage/emulated/0/ 而非傳統 /sdcard/ 或 /mnt/sdcard/,以為是錯誤路徑。
/storage/emulated/0/ 是真實存儲路徑 /data/media/0/ 的符號鏈接// 標準 API(推薦)
File externalDir = Environment.getExternalStorageDirectory();
// 返回:/storage/emulated/0
// 獲取應用專屬外部目錄(無需權限,卸載自動清理)
File appExternalDir = context.getExternalFilesDir(null);
// 返回:/storage/emulated/0/Android/data/com.package.name/files
// 獲取公共下載目錄(API 19+)
File downloadsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
<!-- Android 10 (API 29) 以下需聲明 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Android 10+ 適配分區存儲 -->
<application android:requestLegacyExternalStorage="true" ... >
Context.getExternalFilesDir() 獲取應用私有目錄,無需權限MediaStore 或 Storage Access Framework/storage/emulated/0/ 是正確的標準外部存儲路徑,非錯誤。理解 Android 存儲架構演進,使用官方 API 獲取路徑,才能保證跨版本、跨設備兼容性。