日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android内、外存储 易混淆点剖析(/mnt/sdcard、/storage/sdcard0、/storage/emulated/0等区别)

發(fā)布時(shí)間:2023/12/3 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android内、外存储 易混淆点剖析(/mnt/sdcard、/storage/sdcard0、/storage/emulated/0等区别) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

向原創(chuàng)者致敬!自己感覺(jué)好轉(zhuǎn)載了!

說(shuō)起Android“內(nèi)部存儲(chǔ)”,對(duì)于開(kāi)發(fā)者而言可以毫不猶豫地脫口而出,不就是/data/data目錄嘛,也不盡然,/data/user/0/又如何解釋?那說(shuō)起“外部存儲(chǔ)”,例如sd卡目錄獲取值,更是眾說(shuō)紛紜,是/mnt/sdcard?還是/storage/sdcard0?莫非是/storage/emulated/0?

此疑問(wèn)起源要追溯到筆者在寫(xiě)上一篇博文,即以DexClassLoader類加載原理編寫(xiě)demo實(shí)現(xiàn)類替換修復(fù),其中編碼過(guò)程中涉及到讀寫(xiě)Android內(nèi)外存儲(chǔ)的文件數(shù)據(jù),邏輯就是讀取外部存儲(chǔ)sd卡上的dex文件,寫(xiě)入到內(nèi)部存儲(chǔ)對(duì)應(yīng)的app包下的一個(gè)自定義目錄中。

以上邏輯并不復(fù)雜,但是筆者用模擬器和不同版本的Android真機(jī)測(cè)試時(shí),發(fā)現(xiàn)這獲取sd卡的路徑卻各不相同,思索不解一個(gè)百度,發(fā)現(xiàn)其中大有文章,有的目錄只是鏈接,是個(gè)軟連接,而大部分原因需歸咎于Android版本更新中“多用戶”的新特性出現(xiàn),Google對(duì)用戶的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了調(diào)整。可具體實(shí)情如何,請(qǐng)看以下解說(shuō):

本篇博文涉及到的知識(shí)點(diǎn)如下:

Android內(nèi)、外部存儲(chǔ)基礎(chǔ)知識(shí)點(diǎn)及文件夾所在位置
存儲(chǔ)路徑中“0”的含義與變化
多種sd卡路徑表示含義與區(qū)別
一. Android內(nèi)外存儲(chǔ)基礎(chǔ)知識(shí)
Android手機(jī)上的存儲(chǔ)空間可做如下劃分:

內(nèi)存:RAM
內(nèi)部存儲(chǔ):內(nèi)部ROM
外部存儲(chǔ):外部ROM和SDCard
手機(jī)上的存儲(chǔ)在概念上分成了”內(nèi)部internal“和”外部external“兩部分,但其實(shí)都在手機(jī)內(nèi)部。因此無(wú)論Android手機(jī)是否有可移動(dòng)的sdcard,它都有外部存儲(chǔ)和內(nèi)部存儲(chǔ),且通過(guò)相同的Api方法來(lái)訪問(wèn)可移動(dòng)的sdcard或者手機(jī)自帶的存儲(chǔ)。

以下是一部SamSung手機(jī)的存儲(chǔ)展示圖,用AS自帶的Device File Explore打開(kāi)后展現(xiàn)的文件目錄。

(1)內(nèi)部存儲(chǔ):

Android可以說(shuō)是一個(gè)Linux操作系統(tǒng),它的內(nèi)部存儲(chǔ)空間對(duì)于應(yīng)用程序和用戶來(lái)講就是“/data/data“目錄。內(nèi)部存儲(chǔ)與外部存儲(chǔ)相比有著比較穩(wěn)定,存儲(chǔ)方便,操作簡(jiǎn)單,更加安全(可以控制訪問(wèn)權(quán)限)等優(yōu)點(diǎn),而它唯一的缺點(diǎn)就是空間有限。

內(nèi)部存儲(chǔ)空間的有限意味著應(yīng)物盡其用,用來(lái)保存比較重要的數(shù)據(jù),例如用戶信息資料,口令秘碼等不需要與其他應(yīng)用程序共享的數(shù)據(jù)。注意應(yīng)用程序被卸載時(shí),應(yīng)用程序在內(nèi)部存儲(chǔ)空間的文件數(shù)據(jù)將全部被刪除,避免占用寶貴的空間。

內(nèi)部存儲(chǔ)即data文件夾,其中里面有兩個(gè)文件夾值得關(guān)注:

app文件夾(未root無(wú)法打開(kāi)):存放著所有app的apk文件夾,當(dāng)開(kāi)發(fā)者調(diào)試某個(gè)app時(shí),AS控制臺(tái)輸出的內(nèi)容中有一項(xiàng)是uploading…,代表正在上傳apk到這個(gè)文件夾。
data文件夾:內(nèi)部都是app的包名,存儲(chǔ)著應(yīng)用程序相關(guān)的數(shù)據(jù),例如 data/data/包名/(shared_prefs、database、files、cache)


(2)外部存儲(chǔ)

外部存儲(chǔ)是指用戶在使用時(shí)自行在手機(jī)上添加的外部存儲(chǔ)介質(zhì),例如TS卡,SD卡等閃存儲(chǔ)介質(zhì)。其顯著的優(yōu)點(diǎn)就是存儲(chǔ)空間大,無(wú)需擔(dān)心數(shù)據(jù)清除問(wèn)題,與內(nèi)部存儲(chǔ)不同的是當(dāng)應(yīng)用程序卸載時(shí),它在外部存儲(chǔ)所創(chuàng)建的文件數(shù)據(jù)不會(huì)被清除,因此清理外部存儲(chǔ)空間的責(zé)任丟給了用戶自己。缺點(diǎn)則是不太穩(wěn)定,閃存介質(zhì)對(duì)于Android手機(jī)而言會(huì)出現(xiàn)SD卡不能正常使用的情況。

外部存儲(chǔ)即storage文件夾或mnt文件夾。需要注意的是storage中有一個(gè)sdcard0文件夾,其中又分為公有目錄和私有目錄:

公有目錄:有9大類,比如DCIM、Download等系統(tǒng)為用戶創(chuàng)建的文件夾;
私有目錄: 即Android文件夾/storage/sdcard/Android/,其中的data文件夾包含了許多包名組成的文件夾。


若應(yīng)用程序在運(yùn)行過(guò)程中需要向手機(jī)上保存數(shù)據(jù),通常是保存在sdcard中/storage/sdcard,即應(yīng)用直接在sdcard的根目錄創(chuàng)建一個(gè)文件夾用于數(shù)據(jù)保存,不過(guò)當(dāng)該app被卸載后,數(shù)據(jù)還保留在sdcard中,意味著留下了垃圾數(shù)據(jù)。

在開(kāi)發(fā)中,Google官方建議App數(shù)據(jù)存儲(chǔ)在外部存儲(chǔ)的私有目錄中對(duì)應(yīng)App的包名下storage/sdcard/Android/data/包名/,這樣當(dāng)用戶卸載掉App之后,相關(guān)的數(shù)據(jù)會(huì)一并刪除!

(3)內(nèi)外部存儲(chǔ)常用目錄操作

context.getFilesDir() 內(nèi)部存儲(chǔ)data/data/包名/files目錄
context.getCacheDir() 內(nèi)部存儲(chǔ)data/data/包名/cache目錄
Environment.getExternalStorageDirectory() 外部存儲(chǔ)根目錄
Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DCIM) 外部存儲(chǔ)公有目錄
context.getExternalFilesDir() 外部存儲(chǔ)私有目錄storage/sdcard/Android/data/包名/files。一般存儲(chǔ)長(zhǎng)時(shí)間保存的數(shù)據(jù)。
context.getExternalCacheDir() 外部存儲(chǔ)私有目錄storage/sdcard/Android/data/包名/cache。一般存儲(chǔ)臨時(shí)緩存數(shù)據(jù)。
注意上述最后兩個(gè)API:當(dāng)app被卸載后,sdCard/Android/data/PackageName/下的所有文件都會(huì)被刪除,不會(huì)留下垃圾信息。兩個(gè)API對(duì)應(yīng)的目錄分別對(duì)應(yīng)著 設(shè)置->應(yīng)用->應(yīng)用詳情里面的“清除數(shù)據(jù)”與“清除緩存”選項(xiàng)。

二. 各個(gè)易混淆路徑識(shí)別
1. 文件夾中0的出現(xiàn)
在Android版本4.2JellyBean之前,獲取sdcard的路徑是/sdcard/,但在JellyBean版本之后的路徑成為了/sdcard/0,或者是/sdcard/legacy(legacy可以是0、1、2……),這個(gè)“0”到底代表著什么含義?

這是從JellyBean版本起的一個(gè)新特征——多用戶。因此為了處理單獨(dú)的賬戶,部分目錄結(jié)構(gòu)必須被改變,/sdcard/legacy始終指向當(dāng)前登錄的用戶的SD卡目錄。

正因“多用戶”功能的增加,內(nèi)外部存儲(chǔ)發(fā)生了以下變化:

內(nèi)部存儲(chǔ): 原先的/data/data/其實(shí)相當(dāng)于直接鏈接到當(dāng)前用戶文件夾的,變成了/data/user/0/。
外部存儲(chǔ):例如sd卡路徑不再是/sdcard/,而是/sdcard/legacy/(legacy可以是0、1、2……),其中的“0”可以當(dāng)成“設(shè)備擁有者”,或者稱為“第一用戶”(“第一用戶”毫無(wú)疑問(wèn)的是“設(shè)備所有者”,只有此用戶才能創(chuàng)建額外賬戶)。
大致理解了其由來(lái)后,可能少數(shù)人還遇到過(guò)/sdcard/0/0 這種表示,以下是谷歌對(duì)此的官方解釋:

Google在Android 4.2中引入了“多個(gè)用戶”作為新功能, 為了適應(yīng)“多個(gè)用戶”,Google現(xiàn)在為每個(gè)用戶提供了自己的文件夾以供存儲(chǔ)。 如果您從4.1升級(jí)到4.2,則4.2 ROM將在/data中查找某個(gè)文件,以確定是否需要將所有文件遷移到新的多用戶數(shù)據(jù)結(jié)構(gòu)。 默認(rèn)情況下,4.2將所有/data/media遷移到/data/media/0。不過(guò)使用自定義恢復(fù)會(huì)出現(xiàn)問(wèn)題,自定義恢復(fù)在出廠重置期間會(huì)保留/data/media文件夾。當(dāng)您重新設(shè)置工廠并再次啟動(dòng)4.2 ROM時(shí),4.2 ROM將再次遷移/data/media中的所有內(nèi)容。 每次出廠重置時(shí)它都會(huì)遷移您的文件,這種多次遷移會(huì)導(dǎo)致一些人將他們的文件移動(dòng)到/sdcard/0甚至/sdcard/0/0等等。

2. sd卡路徑隨著Android版本變化
public static final String SDPATH = Environment .getExternalStorageDirectory().getAbsolutePath();//獲取外部存儲(chǔ)的路徑返回絕對(duì)路徑的,就是你的設(shè)備SD卡的文件路徑
1
如上是獲取SD卡目錄的Api,你會(huì)發(fā)現(xiàn)使用不同Android移動(dòng)設(shè)備得到的sd卡目錄不同,不僅如此,其中路徑指向的都是相同的文件,緣由為何?

/sdcard/
/mnt/sdcard/
/storage/sdcard0/
/storage/emulated/legacy/

上面四個(gè)皆指代sd卡路徑,其中演變的由來(lái)見(jiàn)以下Android版本分享:

(1)android 4.0

Galaxy Nexus(GN)手機(jī)上的userData分區(qū)很大,被掛在/data 目錄下。用戶的數(shù)據(jù)通常是存儲(chǔ)在SD卡上,可是GN無(wú)SD卡,即只有intenal內(nèi)部存儲(chǔ)。(第四點(diǎn)中會(huì)講解Galaxy Nexus為何只有內(nèi)部存儲(chǔ)緣由)

Google爸爸并未被眼前困難打倒,直接在userData分區(qū)下虛擬了一個(gè)media目錄,它是是內(nèi)置sd卡的數(shù)據(jù)存儲(chǔ)位置,具體使用了fuse技術(shù)將/data/media虛擬成為一個(gè)叫做/dev/fuse的設(shè)備,為了讓程序能認(rèn)出來(lái),被同時(shí)掛載在 /mnt/sdcard 目錄,又為了兼容以前的程序,做了一個(gè)快捷方式(linux系統(tǒng)里叫軟連接),因此 /sdcard 指向的就是 /mnt/sdcard。

(2)android 4.1

以上是Android 4.0的應(yīng)對(duì)措施,在4.1中同樣使用fuse技術(shù),/dev/fuse 會(huì)被同時(shí)掛載到/storage/sdcard0 目錄?!皊dcard0”表示第一個(gè)sd卡(若有外置sd卡,那會(huì)多一個(gè) /storage/sdcard1) /sdcard 軟連接會(huì)指向 /storage/sdcard0 ,此時(shí)/mnt/sdcard 也是個(gè)軟連接,會(huì)指向/storage/sdcard0。

因此/storage/sdcard0才是最終源頭,/sdcard、/mnt/sdcard是指向它的一個(gè)軟連接而已。

如果你通過(guò)otg線接U盤(pán),會(huì)被掛載到 /storage/usb0目錄,stickmount這個(gè)軟件為了讓圖庫(kù)、快圖、mx player等軟件,能看到u盤(pán)里的數(shù)據(jù),又同時(shí)掛載到 /storage/sdcard0/usStorage/sda1。為何命名為“usb0”,而不是“sda1”?

這是Linux的對(duì)硬盤(pán)的命名方式,如果你的u盤(pán)有多個(gè)分區(qū),就分別是按sda1、sda2此規(guī)律命名下去。

(3)android 4.2及之后

在4.2之后,Android出現(xiàn)了一個(gè)“多用戶”的功能特征,意味著一臺(tái)設(shè)備可能被多個(gè)人同時(shí)應(yīng)用,因此需要將每個(gè)人的數(shù)據(jù)、應(yīng)用、個(gè)性配置分開(kāi)。后兩者容易實(shí)現(xiàn),通過(guò)權(quán)限控制即可,可是數(shù)據(jù)這一塊如何是好?

面對(duì)需求的變更,只好再調(diào)整用戶數(shù)據(jù)的掛載結(jié)構(gòu),4.2版本中同樣使用fuse技術(shù),而/dev/fuse 會(huì)被掛載到/storage/emulated/0 目錄。(若有多個(gè)用戶,0文件夾名稱依次增加,例如/storage/emulated/1)

不僅如此,為了兼容Android版本升級(jí),還同時(shí)掛載到/storage/emulated/legacy,建立了三個(gè)軟連接指向自己:

/storage/sdcard0
/sdcard
/mnt/sdcard
(4)不要太在意“0”

也許在手機(jī)設(shè)備開(kāi)發(fā)中似乎沒(méi)太注意到“多用戶”新特性的作用,無(wú)需太過(guò)在意,它主要在平板上使用,手機(jī)端是禁用的,但底層實(shí)現(xiàn)原理相同。
/mnt/shell/emulated 目錄和 /storage/emulated 下的文件夾是一樣的。

(此點(diǎn)“版本總結(jié)”來(lái)源于機(jī)鋒論壇之關(guān)于android的4.2的0文件夾的詳解,筆者稍有修改)

3. 多種sd卡路徑表示的區(qū)別總結(jié)
在上一點(diǎn)中了解了表示sd卡幾種路徑的演變過(guò)程,此部分對(duì)以下幾個(gè)路徑進(jìn)行簡(jiǎn)單總結(jié)區(qū)別:

(注意:下面路徑中的文件夾相同)

/sdcard/
/storage/sdcard0/
/storage/emulated/0/
/storage/emulated/legacy/
/sdcard/:只是一個(gè)符號(hào)鏈接,鏈接到/storage/sdcard0/
/mnt/sdcard:Android4.0版本之前的顯示
/storage/sdcard0 :Android4.0版本之后的顯示
/storage/emulated/0/:這是參照“emulated MMC”,通常指其內(nèi)部,“0”代表第一個(gè)用戶,即設(shè)備擁有者。 如果您創(chuàng)建其他用戶,則此數(shù)字將為每個(gè)用戶增加。
/storage/emulated/legacy/:與上同理,但指向當(dāng)前工作用戶的部分。(對(duì)于“0”用戶而言,這是/storage/emulated/0/的符號(hào)鏈接)
/storage/sdcard0/:注意這里的“0”并非是一個(gè)單獨(dú)文件夾名,而是作為后綴一樣,意味著“0”并不代表用戶,而是設(shè)備(卡)本身,因此它不需要legacy鏈接。人們可以通過(guò)OTG將讀卡器與另一個(gè)SD卡連接起來(lái),然后路徑將成為/storage/sdcard1/。
為了兼容Android版本升級(jí),還同時(shí)掛載到/storage/emulated/legacy,建立了三個(gè)軟連接指向自己:/storage/sdcard0 、/sdcard、/mnt/sdcard。

sdcard0名稱變化

“sdcard”這個(gè)文件夾是手機(jī)外置SD卡的文件夾名稱,“sdcard0”這個(gè)文件夾是手機(jī)內(nèi)存文件夾名稱。手機(jī)內(nèi)存本身是無(wú)法擴(kuò)展的,但是外置SD卡的空間用戶可以根據(jù)手機(jī)最大使用限制購(gòu)買(mǎi)更換。因此“sdcard0”是內(nèi)置儲(chǔ)存,“sdcard1”是擴(kuò)展儲(chǔ)存,就是一般的sd卡。

如果更多的設(shè)備連接,但命名可能會(huì)有所不同,取決于設(shè)備:

當(dāng)內(nèi)部虛擬SD卡:/mnt/sdcard0/
SD插槽中的物理SD:/mnt/sdcard1/
可調(diào)用其他設(shè)備,如連接適配器的USB閃存驅(qū)動(dòng)器:/mnt/media_rw/usbdisk(kitkat 4.4及以上?)或/mnt/usbdisk(jellybean 4.1 - 4.2)
命名可能取決于設(shè)備、制造商、 ROM等, 但通常情況下,/mnt/*在所有這些情況下只是一個(gè)符號(hào)鏈接,而源頭是位于/storage路徑下。

(此點(diǎn)回答來(lái)自于StackExchange,結(jié)合自身理解翻譯敘述)

4. “/sdcard/”是一個(gè)“假”路徑?
上一點(diǎn)解決了各個(gè)路徑的識(shí)別問(wèn)題,可仍剩下一個(gè)疑惑:Glaxy Nexus沒(méi)有用于SD卡的外部插槽,即只有內(nèi)部存儲(chǔ),但它仍有一個(gè)名為/sdcard/的根文件夾(第二點(diǎn)中的(1)部分已簡(jiǎn)單解釋了原因),詳情為何?以下是Google工程師回應(yīng)Galaxy Nexus背后缺乏USB大容量存儲(chǔ)的理由,即Android為什么從USB大容量存儲(chǔ)轉(zhuǎn)移到內(nèi)部存儲(chǔ)的MTP訪問(wèn)的解釋,可以揭秘為何GN中/sdcard/“假”路徑的問(wèn)題。

UMS:通信技術(shù);
MTP:multi-path transmission網(wǎng)絡(luò)傳輸機(jī)制,多路徑傳輸是指采用多條不相交的路徑來(lái)投遞應(yīng)用分組以增加連接的容量和可靠性的機(jī)制;
ICS:Internet連接共享

Galaxy Nexus不支持USB海量存儲(chǔ)(UMS),即不支持USB存儲(chǔ)模式,這給許多用戶帶來(lái)了震撼。 所有擁有XOOM,Nexus S,Galaxy Tab 10.1或任何缺少SD卡插槽的設(shè)備的人都熟悉這種設(shè)置,因?yàn)樯鲜鏊性O(shè)備的工作方式與Galaxy Nexus類似,都是使用MTP網(wǎng)絡(luò)傳輸機(jī)制而不是UMS通信技術(shù)。以下Google工程師回應(yīng)了Galaxy Nexus相關(guān)問(wèn)題:

Q: ICS不支持USB大容量存儲(chǔ)?

A: ICS支持USB海量存儲(chǔ)(UMS), Galaxy Nexus不會(huì),這與Honeycomb(蜂巢)相同,例如HC支持USB大容量存儲(chǔ),而Xoom不支持。

如果給定設(shè)備有可移動(dòng)的SD卡,它將支持USB大容量存儲(chǔ)。如果設(shè)備只有內(nèi)置存儲(chǔ)(如Xoom、Galaxy Nexus),它通常僅支持MTP和PTP。在沒(méi)有專用存儲(chǔ)分區(qū)的設(shè)備上(如可移動(dòng)SD卡或像Nexus S這樣的單獨(dú)分區(qū)),在物理上不可能支持UMS。這是因?yàn)閁MS是塊級(jí)協(xié)議,主機(jī)PC直接訪問(wèn)存儲(chǔ)上的物理塊,以便Android不能同時(shí)安裝它。

通過(guò)我們?cè)贖oneycomb中引入的統(tǒng)一存儲(chǔ)模型,可以在應(yīng)用程序數(shù)據(jù)和媒體數(shù)據(jù)之間分享完整的32GB(或16GB其他),即當(dāng)您的內(nèi)部應(yīng)用數(shù)據(jù)分區(qū)已滿時(shí),Nexus S上的5GB免費(fèi)空間不會(huì)再無(wú)所事事。然而這樣的代價(jià)是,Android不能再為主PC直接通過(guò)USB傳輸存儲(chǔ)。相反使用MTP。在Windows(大多數(shù)用戶使用)上,它在資源管理器中內(nèi)置了MTP支持,使其看起來(lái)完全像磁盤(pán)。(Linus和Mac上沒(méi)那么容易,sad)

總體而言,這是一個(gè)更好的手機(jī)體驗(yàn)。

Q: 由于Galaxy Nexus僅具有內(nèi)部存儲(chǔ),因此ASTRO文件管理器等應(yīng)用程序如何在不需要root權(quán)限的情況下工作?

A:首先我們?cè)趦?nèi)部存儲(chǔ)器上指定一個(gè)特定的目錄作為“SD卡”, 然后實(shí)現(xiàn)了一個(gè)FUSE文件系統(tǒng),除了丟棄所有權(quán)限檢查之外,什么也不做,除非重新將該目錄掛載為/sdcard。 除了權(quán)限之外,FUSE文件系統(tǒng)是直通的,因此實(shí)際的文件可以從目錄中讀取或?qū)懭肽夸洝?/p>

我們使用“假代理” FUSE文件系統(tǒng)來(lái)重新安裝特定的目錄以偽裝成SD卡, 這對(duì)于應(yīng)用程序來(lái)說(shuō)是完全透明的,他們不能說(shuō)沒(méi)有直接與磁盤(pán)通話。

(閱讀自此,GN中為何有/sdcard/ 這個(gè)“假”路徑的秘密已經(jīng)被揭開(kāi),下一個(gè)Q&A則是幫助開(kāi)發(fā)者更深入理解Glaxy Nexus為何舍棄USB大容量存儲(chǔ),他們考慮的思路又是如何?)

Q: Galaxy Nexus這么做也許有它的理由,可是Micro-SD卡插槽需要多少空間?為何不可兩者兼得?

A:舍棄SD卡插槽主要原因并不在硬件上,而是沒(méi)有一個(gè)適合的使用UI。Android核心原則之一是你永遠(yuǎn)不需要文件管理器,因此我們想要避開(kāi)其他操作系統(tǒng)的一個(gè)綜合癥——文件選擇器。app應(yīng)該知道如何處理它的本地?cái)?shù)據(jù),即存儲(chǔ)在本地或者云端,而不是搜查你的Micro-SD卡來(lái)獲取數(shù)據(jù)。

同時(shí)擁有內(nèi)部存儲(chǔ)和SD卡的這個(gè)目標(biāo)確實(shí)有些難以實(shí)現(xiàn),例如指定的相片,相機(jī)應(yīng)該保存在內(nèi)部的16GB還是SD卡?市場(chǎng)中的app應(yīng)該安裝到內(nèi)部存儲(chǔ)還是SD?諸如此類等等。沒(méi)錯(cuò),你也許會(huì)說(shuō)一個(gè)簡(jiǎn)單的選擇或者設(shè)置即可解決,但那樣類似于文件選擇器的體驗(yàn)并非是我們的理想期望。除此缺點(diǎn)之外,還要考慮到API,若用戶在SD卡上存儲(chǔ)照片,是否將其添加到系統(tǒng)媒體內(nèi)容提供商?如果需要的話這對(duì)app而言是個(gè)災(zāi)難,因?yàn)樗麄儧](méi)有操作照片來(lái)去這種概念。

而我們最終可能做的是將“導(dǎo)入/導(dǎo)出”這種概念添加到可移動(dòng)存儲(chǔ)。因此相機(jī)將始終保存到內(nèi)部存儲(chǔ)中,并且當(dāng)您彈出SD卡時(shí)(或在USB主機(jī)設(shè)備上插入拇指驅(qū)動(dòng)器),您可以啟動(dòng)“”遷移或“導(dǎo)入/導(dǎo)出”對(duì)話框。

(此點(diǎn)Q&A來(lái)源于androidpolice新聞,結(jié)合自身理解翻譯敘述)

Android開(kāi)發(fā)中有一個(gè)隱性的問(wèn)題,就是市面上各個(gè)手機(jī)的Android版本并不統(tǒng)一。會(huì)被不同版本所影響的邏輯處理,開(kāi)發(fā)人員需要做好兼容處理,去適應(yīng)市場(chǎng)上大部分機(jī)型,例如此篇文章的混淆點(diǎn)。

此篇文章主要的疑問(wèn)通過(guò)搜索多篇文章最終解決,其中涉及到不少英文網(wǎng)站,例如StackOverflow、Stack Exchange,還有國(guó)內(nèi)的論壇、博客等等,知識(shí)開(kāi)源的感覺(jué)還是很棒的,雖然國(guó)內(nèi)還是偏少,共勉~

若翻譯、理解有誤,虛心指教~
?

總結(jié)

以上是生活随笔為你收集整理的Android内、外存储 易混淆点剖析(/mnt/sdcard、/storage/sdcard0、/storage/emulated/0等区别)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中国毛片在线观看 | 色欲国产精品一区二区 | 色偷偷av一区二区三区 | 在线播放的av | 亚洲成av人片在线观看无 | 伊人www| 欧美色成人| 午夜精品久久久久久久久久久久久蜜桃 | 成人精品一区二区三区在线 | 美女视频网址 | 亚洲福利视频一区二区 | 三级自拍视频 | 风流少妇 | 国产熟女一区二区三区五月婷 | 久久精品国产清自在天天线 | 国产一级精品毛片 | 中文字幕一区二区人妻痴汉电车 | 国产欧美一区二区精品性色99 | 亚洲青春草 | 久久免费高清 | 成人影片网址 | 亚洲国产精品成人va在线观看 | 黄色在线网 | 深夜福利在线免费观看 | 免费一级黄色片 | 中文字幕在线字幕中文 | 91国产中文字幕 | 中文字幕无码精品亚洲35 | 2020亚洲天堂 | 午夜视频福利网站 | 在线日韩视频 | 美女露隐私网站 | 日本中文字幕视频在线 | 波多野结衣不卡视频 | 精品无码一区二区三区 | 黄色片在线免费看 | 日韩污污| 色就操| 有声小说 成人专区 | 丰满人妻一区二区三区性色 | 亚洲人午夜射精精品日韩 | 中文字幕777 | 欧美六区 | 精品国偷自产在线 | 久久精品高清 | 国产真实在线 | 日韩视频免费观看 | 欧美在线精品一区二区三区 | 51国产偷自视频区视频 | 国产资源免费 | 男人天堂久久 | 欧美成人做爰大片免费看黄石 | 三级免费网址 | 日本一级片在线观看 | 国产精品99久久久久久一二区 | 日本美女全裸 | 亚洲福利网站 | 中文亚洲av片在线观看 | 欧美xxxx精品| 色狠狠久久av大岛优香 | 亚洲国产欧美精品 | 蜜臀99久久精品久久久久久软件 | 性一交一乱一色一视频麻豆 | 久久亚洲影视 | 少妇av| 337p粉嫩大胆色噜噜噜 | 国产精品麻豆欧美日韩ww | 欧美激情一区二区三区免费观看 | 亚洲国产精品区 | 伊人日日夜夜 | 欧洲色av | 成人国产片女人爽到高潮 | 精品人妻少妇AV无码专区 | 国产高清一 | 电影一区二区三区 | 另类小说婷婷 | 色涩网站 | 五十路中出 | jlzzjizz在线播放观看 | 国产精品久久久不卡 | 嫩草影院懂你的 | 亚洲专区免费 | 黄色网在线看 | 精品少妇视频 | 精品人妻无码一区二区三区换脸 | 久久狠狠婷婷 | 国产黄色小视频在线观看 | 国产在线视频一区 | 国产aaa大片| 2019亚洲男人天堂 | av资源共享 | 熟女少妇精品一区二区 | 日韩色道 | 光棍影院手机版在线观看免费 | a级国产视频 | 国产黄色免费在线观看 | 超碰久操 | 欧美精品第一区 | 进去里片欧美 |