簡體   English   中英

Android:外置SD卡的絕對位置

[英]Android: absolute location of External sd-card

我有一個非常簡單的問題,但到目前為止,我無法找到這個問題的答案。 “有沒有辦法在Android中找到INTERNAL STORAGE DIRECTORYEXTERNAL STORAGE DIRECTORY(SDCARD)的絕對路徑?”

請不要建議使用Environment.getExternalStorageDirectory因為它通常會返回內部存儲路徑,或者Android操作系統默認選擇WHATEVER存儲介質。

有什么建議嗎?

之前已經問過SO,請使用搜索。 簡而言之,“外部存儲”更像是“共享存儲”,它可能會或可能不會由實際的SD卡實現。 某些設備有一個額外的SD卡,不用作外部存儲設備。 如果這是您要求的,那么目前沒有用於訪問其安裝位置的公共API,並且它在不同設備之間有所不同。 您可以檢查/proc/mount以查看當前安裝的內容並從那里開始。

此鏈接來自Android配置指南。 我認為這是推薦的,不是必需的。

https://source.android.com/devices/tech/storage/config-example.html

所以,要獲得SDCARD,你可以做到。

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和我的三星Tab 2&3上定義,但不在我的Galaxy S(2.3)或我的戴爾Venue(4.3)上。 在三星設備上,它似乎首先包含SD卡的多條路徑,因此分割。

你應該用

Environment.getExternalStorageDirectory().getAbsolutePath()

我認為/ storage / sdcard0 /用於內部sdcard,而/ storage / 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 /”;

在三星Galaxy Note 10.1 2014版SM-P600(我會假設同一年份的大多數其他三星Galaxy音符),“REAL”外部SD卡的完整路徑是:

/存儲/ extSdCard /

我發現我使用終端並且做了:

cd / storage / extSdCard /

然后,在卡片的根目錄中,我使用“ls”命令列出文件,這樣我就可以驗證存儲在其中的內容。 多數民眾贊成我如何找到我的。 希望它可以幫助別人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM