StreamProvider - getExternalFilesDir - есть ли синтаксис для нескольких внешних? Карта MicroSD на Android 4.4

У меня современное устройство с Android 4.4 — LG L34C, которое поставляется с KitKat 4.4.

Относительно библиотеки https://github.com/commonsguy/cwac-provider - я вижу, что есть упоминание о getExternalFilesDir, но не во множественном числе.

Мое тестирование getExternalFilesDirs() показывает, что возвращаемый индекс массива имеет 0 для «эмулируемой/sdcard», а индекс 1 имеет фактическую внешнюю SD-карту.

Можно ли получить синтаксис для paths.xml, который работает с множественным вторичным индексом getExternalFilesDirs?


person RoundSparrow hilltx    schedule 03.08.2014    source источник


Ответы (1)


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

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

person CommonsWare    schedule 03.08.2014
comment
Спасибо за ваш ответ. Вы подтверждаете мое понимание. Это область, которая, говоря простым языком, отстой на Android. Тот факт, что нет предсказуемого пути или соглашения об именах для съемного пути MicroSD. 4.4 кажется не лучше в этом простом аспекте. Я ценю ваше письмо и время. По поводу API цитирую Джозефа Кэмпбелла. Достоинства прошлого — пороки сегодняшнего дня. И многое из того, что считалось пороком прошлого, сегодня является необходимостью. Нравственный порядок должен догнать моральные потребности реальной жизни во времени, здесь и сейчас. И это то, чего мы не делаем. - person RoundSparrow hilltx; 03.08.2014
comment
Что касается решения актуальной проблемы, я предпочитаю очевидное и простое. В Android я тоже иногда вижу простые правила решения. Пример: пустой файл .nomedia, касающийся поведения при сканировании. Может быть, какой-то атрибут тега в записи paths.xml указывает на файл сканирования на съемной карте SDCard? mediatag=thisisit дает итерацию всех getExternalFilesDirs() до тех пор, пока они не будут в корне (или корне + указанный подпуть)? - person RoundSparrow hilltx; 03.08.2014
comment
@RoundSparrowhilltx: я не большой поклонник вашего подхода, так как он может легко привести к неожиданному результату. Если есть N возможных копий foo.txt, то какая из них обслуживается, зависит от того, на каком съемном носителе находятся эти копии, и, насколько мне известно, в каком порядке вставляются съемные носители. Вы, конечно, можете создать потоковую CP, которая обрабатывает съемные носители, но я думаю, что она должна иметь больше возможностей для конкретных приложений. Вот пример проекта, демонстрирующий базовую технику: github.com/commonsguy/cw -omnibus/tree/master/ContentProvider/ - person CommonsWare; 03.08.2014
comment
TAG может быть уникальным, чтобы соответствовать файлу (уникальный файл флага тега на каждой SD-карте). Ваш ответ, на мой взгляд, кажется чрезмерно сфокусированной теорией API. На самом деле, я хочу иметь возможность вставить карту MicroSD на 128 ГБ и использовать ее в течение 3 месяцев, а затем заменить. За время существования этого API, вызываемого при каждой выборке файла, изменение носителя само по себе является редким событием. -- В некотором смысле, разве мы не говорим о той самой проблеме, из-за которой Linux для серверов и настольных компьютеров перешел от соглашений /dev/sda к UUID? даже FAT имеет 4-байтовый идентификатор тома. На самом деле большинство из них 0000-0000... - person RoundSparrow hilltx; 04.08.2014
comment
@RoundSparrowhilltx: Ваш ответ, на мой взгляд, кажется чрезмерно сфокусированным на теории API - да, ну, я тот парень, который должен поддерживать библиотеку. Это означает, что я на крючке для всех пользователей всех приложений, использующих библиотеку, а это означает, что я ошибаюсь из-за осторожности. - person CommonsWare; 04.08.2014
comment
Я считаю, что вы видите необходимость установить лучший стандарт. Но вы ждете. UUID SDCard кажется правильным подходом — и предупреждение в ваших письме и примечаниях к выпуску о множестве повторяющихся UUID, существующих на томах FAT, избавит нас от неудач прошлого и заглянет в будущее;) - person RoundSparrow hilltx; 04.08.2014
comment
@RoundSparrowhilltx: Но ты ждешь — нет, я занят. Я чешу чужие зуды в своих библиотеках, но не всегда и не тогда, когда результаты ненадежны. Даже если UUID существуют, они недоступны в Android SDK AFAIK. По моему опыту, предупреждения в документации неэффективны и не помогают пользователям приложений, которым и будет причинен вред. - person CommonsWare; 04.08.2014