本篇只針對API19及以上
訪問外部存儲的權限
- API19開始,應用可以管路在它外部儲存的特定包名目錄,而不需要聲明讀寫權限,比如,包明為com.mimminaya.permission的應用,可以自由訪問外部儲存卡上的Android/data/com.minminaya.permission/[]目錄
外部存儲對數據提供的保護較少,所以系統不應該存儲敏感數據在外部存儲上。
特別地,配置和log文件應該存儲在內部存儲中,這樣它們可以被有效地保護。
Environment API的目錄
//外置內存卡根,為避免污染用戶根命名控件,不推薦使用,加文件夾
Log.e(TAG, "/storage/181C-0A4B路徑:" + Environment.getExternalStorageDirectory().toString());
Log.e(TAG, "/storage/181C-0A4B/Download路徑:" + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString());
Log.e(TAG, "/data路徑:" + Environment.getDataDirectory().toString());
Log.e(TAG, "/cache路徑:" + Environment.getDownloadCacheDirectory().toString());
Log.e(TAG, "/system路徑:" + Environment.getRootDirectory().toString());
Context下的目錄
這些目錄推薦存放一些內部數據,且不需要聲明權限(包名目錄下)
外置卡上的
Log.e(TAG, "/storage/181C-0A4B/Android/data/com.minminaya.permission1/cache路徑:" + getExternalCacheDir());
Log.e(TAG, "/storage/181C-0A4B/Android/data/com.minminaya.permission1/files/Download路徑:" + getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS));
任何應用私有的文件的應該被放置在 Context.getExternalFilesDir返回的目錄下,在應用被卸載的時候,系統會清理的就是這個目錄。
內存上的
Log.e(TAG, "內存上的{包名/files}路徑:" +getFilesDir());
Log.e(TAG, "內存上的{包名/cache}路徑:" +getCacheDir());
注意
華為手機如果在存儲里面設置默認存儲為外置卡,則內置外置內存卡目錄掛載將變換