2012-07-02 183 views
4

我通過USB線連接了android設備和PC。我的內部SD卡位置路徑爲/mnt/sdcard。但我的外部USB設備路徑爲/mnt/userdata1。我嘗試使用此代碼找到僅內部SD卡路徑Environment.getExternalStorageDirectory()。我使用此代碼只能訪問內部SD卡路徑。如何訪問外部USB路徑。
如何在android中訪問USB路徑?

例如屏幕截圖是在這裏... Example

在這個例子中含有Internal MemoryExternal SD cardUSB Storage。如何以編程方式找到此路徑(Internal MemoryExternal SD cardUSB Storage)。在此代碼中Environment.getExternalStorageDirectory()僅顯示來自所有Internal Memory文件的文件。那麼如何訪問其他路徑(External SD cardUSB Storage

請用代碼引導我。謝謝..

+0

那麼究竟是什麼問題呢? – Janusz

+0

我知道th內部SD卡路徑。但是如何找到外部USB設備路徑。我不知道。 –

+0

使用外部存儲器時需要記住的一件事:您必須包含權限。寫入外部存儲需要'<使用權限android:name =「android.permission.WRITE_EXTERNAL_STORAGE」/>' –

回答

0

如果我理解正確的,你在呼喚什麼「外部」 USB路徑實際上是掛載點計算機上的SD卡。很可能,您的SD卡的標籤爲userdata1。因此,當它安裝在計算機上時,它將獲得/mnt/userdata1安裝點。然而,這不是嚴格必要的,它可以是任何掛載點。事實上,如果你將它連接到另一臺計算機上,它很容易成爲另一個安裝點。

因爲此路徑是由計算機操作系統決定,你需要在計算機上找到這條路徑(注意,這可能是不同的,每次將手機連接到電腦上,所以你需要做的它每次)。

從你的問題和路徑結構(/mnt/userdata1)我猜你正在使用Linux或其他UNIX版本。因此,您可以在PC上運行mount以查看已安裝設備的列表。例如,這裏是我的Mac上的輸出:

$ mount 
/dev/disk0s2 on/(hfs, local, journaled) 
devfs on /dev (devfs, local, nobrowse) 
map -hosts on /net (autofs, nosuid, automounted, nobrowse) 
map auto_home on /home (autofs, automounted, nobrowse) 
/dev/disk1s1 on /Volumes/ALEKS540 (msdos, local, nodev, nosuid, noowners) 

注意,在輸出的最後一行 - 這是安裝在我的電腦連接的Android手機的SD卡。在mac上,掛載點是在/Volumes而不是/mnt下創建的。除此之外,ALEKS540是我的SD卡的標籤,因此它以這種方式安裝。

內部在手機上,它仍然安裝爲/mnt/sdcard

但從了Android的點,可能有三個存儲類型:

  1. 內存它總是裝/下,在設備上,包含了除SD卡及以下USB存儲一切。
  2. SD卡 - 這被稱爲「外部存儲」,通常安裝爲/mnt/sd,但並非總是如此。 Environment.getExternalStorageDirectory()將返回SD卡安裝點的路徑。
  3. USB存儲 - 這是僅支持很少的設備(那些支持USB主機模式的外部存儲)。這將被安裝在/mnt下的某個地方,但確切位置會有所不同。您將需要使用Android NDK來詢問和重複安裝的設備,以便找到您之後的設備。
+0

我現在編輯我的問題。我添加了示例截圖鏈接.. –

+0

@DineshLingam我更新了我的答案 –

+0

感謝您的回答。對於遲到的回覆抱歉。 –