Как получить доступ к USB-пути в android?

Я подключил Android-устройство и ПК через USB-кабель. Моя внутренняя карта SD-карты. Путь как /mnt/sdcard . Но мой внешний путь USB-устройства как /mnt/userdata1 . Я пытаюсь использовать этот код, чтобы найти только внутренний путь SD-карты Environment.getExternalStorageDirectory() . Я использую этот код для доступа только к внутреннему пути SD-карты. Как получить доступ к внешнему USB-контуру.

Например, Скриншот здесь … Пример

В этом примере содержатся Internal Memory , External SD card и USB Storage . Как найти этот путь ( Internal Memory , External SD card и USB Storage ) программно. В этом коде Environment.getExternalStorageDirectory() просматривается только файлы из всех файлов Internal Memory . Итак, как получить доступ к другому пути ( External SD card и USB Storage )

Пожалуйста, назовите меня кодом. Благодаря..

Если я правильно понимаю, то, что вы вызываете «внешний» USB-путь, на самом деле является точкой монтирования вашей SD-карты на вашем компьютере. Скорее всего, ваша SD-карта имеет ярлык userdata1 . Поэтому, когда он установлен на компьютере, он получает точку монтирования /mnt/userdata1 . Однако это не является абсолютно необходимым, и это может быть любая точка монтирования вообще. Фактически, если вы подключите его к другому компьютеру, он может быть легко другой точкой монтирования.

Поскольку этот путь определяется операционной системой компьютера, вам необходимо найти этот путь на своем компьютере (обратите внимание, что это может быть различным при каждом подключении телефона к ПК, поэтому вам нужно будет делать это каждый раз) ,

Из вашего вопроса и структуры пути ( /mnt/userdata1 ) Я предполагаю, что вы используете Linux или какую-либо другую версию unix. Поэтому вы можете запустить 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-картой. На macs точки монтирования создаются в /Volumes вместо /mnt . Кроме того, ALEKS540 является ярлыком моей SD-карты, поэтому он установлен таким образом.

Внутри телефона он все еще монтируется как /mnt/sdcard .

С точки зрения Android могут быть три типа хранения:

  1. Внутренняя память всегда монтируется под / на устройстве и содержит все, кроме SD-карты и USB-накопителя ниже.
  2. SD-карта – это называется «внешнее хранилище» и обычно монтируется как /mnt/sd , но не всегда. Environment.getExternalStorageDirectory() вернет путь к точке подключения SD-карты.
  3. USB-накопитель – это поддерживается только на очень немногих устройствах (поддерживающих режим USB-хоста для внешнего хранилища). Это будет установлено где-то под /mnt , но точное местоположение будет отличаться. Вам нужно будет использовать Android NDK для опроса и повторения установленных устройств, чтобы найти тот, который вам нужен.