我有一個非常簡單的問題,但到目前爲止,我無法找到這個問題的答案。 「有什麼方法可以在Android中找到INTERNAL STORAGE DIRECTORY
和EXTERNAL STORAGE DIRECTORY(SDCARD)
的絕對路徑?」Android:絕對位置的外部SD卡
請不建議使用Environment.getExternalStorageDirectory
,因爲它通常會返回內部存儲或任何存儲介質選擇爲的是Android操作系統的默認路徑..
任何建議嗎?
我有一個非常簡單的問題,但到目前爲止,我無法找到這個問題的答案。 「有什麼方法可以在Android中找到INTERNAL STORAGE DIRECTORY
和EXTERNAL STORAGE DIRECTORY(SDCARD)
的絕對路徑?」Android:絕對位置的外部SD卡
請不建議使用Environment.getExternalStorageDirectory
,因爲它通常會返回內部存儲或任何存儲介質選擇爲的是Android操作系統的默認路徑..
任何建議嗎?
以前在SO上有過這個問題,請使用搜索。簡而言之,「外部存儲」更像是「共享存儲」,它可能會或可能不會被實際的SD卡所實現。某些設備具有附加的SD卡,不能用作外部存儲器。如果這是您要求的,那麼目前沒有用於訪問其安裝位置的公共API,並且它在不同設備之間有所不同。您可以檢查/proc/mount
以查看當前安裝的內容,然後從此處開始。
我已經注意到它通常是'/ mnt/sdcard',但是它是通用的嗎? –
'/ mnt/sdcard'通常是外部存儲的路徑,但我不認爲它是通用的。額外的SD卡(例如在Xoom或Iconia上)被安裝在其他地方。我已經看到了對「輔助外部存儲」的引用,但在SDK中沒有它的API。 –
是的,在Xoom,Galaxy Tab,華碩平板電腦,三星Galaxy S2等設備中。/mnt/sdcard通常指向內部存儲;而不是外部的SD卡存儲。 – Farhan
您應該使用
Environment.getExternalStorageDirectory().getAbsolutePath()
請再次檢查我的問題。我寫道Environment.getExternalStorageDirectory()不一定會返回真實外部(SD卡)目錄的絕對路徑。 – Farhan
我覺得/存儲/ sdcard0用於/內部SD卡和/存儲/ sdcard1 /用於外置SD卡,如果有兩個存儲選項存在。 如果你正在檢查一個文件是否存在於任何一個SD卡中,你應該檢查所有可能的路徑。
String path;
if(new File("/storage/sdcard/yourpath").exist())
{
path="/storage/sdcard/yourpath";
}
else if(new File("/storage/sdcard0/yourpath").exists())
{
path="/storage/sdcard0/yourpath";
}
else if(new File("/storage/sdcard1/yourpath").exists())
{
path="/storage/sdcard1/yourpath";
}
String path = ExternalStorageDirectoryPath +「/ foldername /」;
此鏈接來自Android配置指南。我認爲這是推薦,並不是必需的。
https://source.android.com/devices/tech/storage/config-example.html
因此,得到的SD卡,你可以做。
String storagePath = System.getenv("SECONDARY_STORAGE");
if (storagePath == null) {
return null;
} else {
String[] storagePathArray = storagePath.split(":");
return storagePathArray[0];
}
EXTERNAL_STORAGE似乎是我自己的一切。
SECONDARY_STORAGE在我的LG GTab 8.3和我的三星標籤2 & 3上定義,但不在我的Galaxy S(2.3)或我的Dell Venue(4.3)上。在三星設備上,它似乎包含SD卡的多個路徑,因此分割。
在三星Galaxy Note 10.1 2014版SM-P600(我將承擔同樣復古的大多數其他三星Galaxy筆記),的完整路徑「真正的」外部SD卡,是這樣的:
/存儲/ extSdCard/
我發現使用終端和沒有地雷:
坎德拉/存儲/ extSdCard/
然後一旦在卡的根,我使用的「ls」命令列出的文件,所以我可以驗證存儲在其上的內容。多數民衆贊成我的發現我的。希望它可以幫助別人。
Environment.getExternalStorageDirectory is_defined_返回「外部存儲」目錄,但不再是必需的可移動卡。它永遠不會返回「內部存儲」目錄(通常是/ data分區)。對於如何確定系統中可移除SD卡的路徑,可能沒有一個Android範圍的標準,該系統也具有焊接在「外部存儲」分區中的系統,因爲這似乎更像是上游android功能的供應商擴展。 –
是的,我同意你的意見。我也認爲沒有辦法確定一個可移動的SD卡的路徑。這應該已經實現,因爲有時應用程序可能會給用戶選擇內部存儲或外部存儲的選項。在這種情況下,無論是爲個別設備硬編碼目錄路徑(考慮到當今不同的設備,這不是一個好主意),還是Android應該提供一個公共API .. – Farhan
@Farhan您是否設法找到任何解決方案?我正在尋找相同的。你有沒有嘗試/ proc/mount以及任何合理的成功? – Ahmed