首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 檔案下載儲存路徑選擇:內部儲存 vs SD 卡,隱藏媒體掃描

     編輯:程式設計綜合問答

路徑對比

維度內部儲存 (getFilesDir/getCacheDir)外部儲存 (getExternalFilesDir/SD卡)
權限無需權限 (API 19+)需 WRITE_EXTERNAL_STORAGE (API 19-28),API 29+ 分區儲存
空間較小 (系統分配)較大 (用戶可見)
生命週期應用解除安裝自動刪除應用解除安裝**不刪除** (公共目錄)
媒體掃描不掃描**會被相冊/音樂掃描顯示**

隱藏 SD 卡檔案不被相冊掃描

  1. .nomedia 檔案:在目標資料夾建立空檔 .nomedia,MediaScanner 會跳過該目錄。
  2. 非標準副檔名:儲存為 .dat、.bin 或無副檔名,降低被識別為媒體機率。
  3. 加密/壓縮:AES 加密或 ZIP 壓縮後儲存,讀取時解密解壓。
  4. 內部儲存優先:敏感/核心資源放 getFilesDir(),僅大體積非敏感資源 (離線地圖、影片) 放外部儲存並加 .nomedia。

QQ/微信為何不被掃描

它們儲存於 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"); // 非媒體副檔名
// 或加密寫入
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved