Android: определите физическую SD-карту и напишите на ней

У меня есть проблема, которую мне трудно понять.

Я работаю над приложением, которое должно контролировать пространство хранения устройства, чтобы выполнять его обычные процессы, в дополнение к нему; приложение должно быть в состоянии определить, есть ли физическая SD-карта (вставленная в слот), и определить приоритет ее использования вместо эмулируемого внешнего пространства.

Я много читал и перепробовал много примеров, и результат тот же, я подробно излагаю его ниже:

  1. Всегда телефон указывает, что внешнее пространство эмулируется
  2. Даже если оно имеет SD-карта в слоте, приложение не использует ее, не идентифицирует ее по вышеуказанному.
  3. Поэтому я не нашел способа рассчитать пространство, доступное для типов хранения: внутреннее (используемое приложениями / данными / данными), внешнее эмулированное (если у меня нет SD), реальное внешнее (если у меня есть SD) )

Чтобы сохранить файл на SD (предположительно), используйте предложение

File file = new File(Environment.getExternalStorageDirectory(), name);

, где name - это String с именем файла. Файл создается всегда во внешнем пространстве , эмулируется , независимо от того, есть ли у вас SD в слоте, не используйте его. Согласно , этому , это должно быть правильной формы.

Метод isExternalStorageEmulated() всегда возвращает true, а метод isExternalStorageRemovable() всегда возвращает false

Я лечу следующее:

String state = Environment.getExternalStorageState();// siempre es "mounted" con SD o no presente
if(Environment.MEDIA_MOUNTED.equals(state)) {
    ...
}

Даже из этого:


Во всех местах, с которыми я консультировался, эти методы выполняют свою работу, но я не понимаю свой случай, потому что не могу достичь желаемого результата.

Я протестировал свое приложение на следующих устройствах:

  1. LG L5 (Android 4 +)
  2. Sony Xperia (Android 4 +)
  3. Alcatel Pop 2 (Android 5)

Результат был таким же. В частности, должны быть решены следующие вопросы:

  1. Как «действительно» определить наличие физической SD?
  2. Как «действительно» записать файл на физическую SD?

1
задан 26.04.2016, 19:43
2 ответа

Насколько я знаю маршрут SD зависит от разработчика. Я на данный момент нашел эти 3 маршрута: / storage / sdcard1 / / storage / extsd//mnt/external_sd /

мало полезный делать это (он стоит мне, что работал с небольшим количеством разработчиков). В этом трэде они говорят об одной funciГіn, что возвращает маршрут, даже, что возвращает меня одинокому мне "null".

, Как сохранение и читать прямо в scard

String sdPath = System.getenv("SECONDARY_STORAGE");

Надеялось, что он подает тебе

1
ответ дан 24.11.2019, 14:31
  • 1
    Твоя точка правильна и в самом деле - то, что я делаю, так как hab и # 237; в консультировавший с кем-то из сайта в ingl и # 233; в. получающий Ответ, хотя эти люди быть должным и # 225; каким-то образом мочь определять хорошо это в documentaci и # 243; n; так как все то, что говорит doc, - то, что точно не функционирует. –  Rosendo Ropher 05.05.2016, 19:49
  • 2
    Возможный soluci и # 243; n, который я даже не протестировал, podr и # 237; чтобы состоять в том, чтобы пробегать папки маршрута / storage / и отказываться от тех, которые являются геном и # 233; богатые Android как emulated, sdcard0 или и #191; usbotg?. –  Ilsanchez 06.05.2016, 11:07

Сначала нужно проверять, если SD Card "смонтирован":

    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))   {
        Log.i("SDCARDINFO","SD Card se encuentra presente.");
   } else {
        Log.i("SDCARDINFO","No se encuentra SD Card.");
   }

Издавая....

0
ответ дан 24.11.2019, 14:31
  • 1
    Я обновил вопрос, с этой точкой. Он не стоится для этого случая, так как, если я это подтверждаю. –  Rosendo Ropher 26.04.2016, 19:43

Теги

Похожие вопросы