Переименовать файлы на SD карте. Андроид приложение
Никак не получается переименовать файл на SD карте из своего приложения. Устройство хуавей андроид 8. Разрешения на запись и чтение есть. Использую такую форму:
oldfile.renameTo(newfile)
Плюс ко всему прочему проверка:
oldfile.canWrite();
возвращает false. Уточню, файлы расположенные на устройстве спокойно переименывает, проблемы только с картой.
Отслеживать
задан 15 янв 2020 в 19:08
636 4 4 серебряных знака 11 11 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Начиная с версии Android 4.4 приложениям запрещен доступ к редактированию содержимого SD карты через класс File . Вместо этого предлагается использовать Storage Access Framework. Storage Access Framework умеет работать с SD картой начиная с Android 5.0 (на 4.4 редактировать содержимое SD карты официально нельзя). Можно использовать Intent.Intent.ACTION_OPEN_DOCUMENT_TREE чтобы дать пользователю выбрать папку:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); startActivityForResult(intent, REQUEST_CODE);
Результат выбора придет в onActivityResult . Сначала можно проверить, действительно ли пользователь выбрал нужную папку. Для этого можно вручную соорудить tree Uri из абсолютного пути файла и потом проверить, действительно ли в интенте пришел этот tree Uri. Потом нужно получить разрешение на работу с этой папкой через getContentResolver().takePersistableUriPermssion() и потом можно использовать класс DocumentFile чтобы получить список файлов в папке и класс DocumentsContract , чтобы переименовать требуемый файл:
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) < if(requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK && data!= null && data.getData() != null)< Uri treeUri = data.getData(); int takeFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION; getContentResolver().takePersistableUriPermission(treeUri, takeFlags); DocumentFile folder = DocumentFile.fromTreeUri(this, treeUri); DocumentFile fileToRename = folder.listFiles()[0]; try< DocumentsContract.renameDocument(getContentResolver(), fileToRename.getUri(), "top.txd"); >catch(FileNotFoundException exception) < >getContentResolver().releasePersistableUriPermission(treeUri, takeFlags); > else < super.onActivityResult(requestCode, resultCode, data); >>
Важное уточнение: в следующей версии Android 11 доступ даже к внутреннему хранилищу через File будет закрыт. Придется использовать Storage Access Framework и для внутреннего хранилища.
Можно ли изменить имя microSD/SD карты без форматирования?
Можно ли изменить имя microSD/SD карты без форматирования? Покажу на этом примере /media/user/2FB3-5C08 как изменить это значение 2FB3-5C08 на то которое нужно? Если это можно сделать только с форматированием так и напишите, вопрос будет решён. Как менять UUID шестнадцатизначный знаю а этот идентификатор не умею, подскажите кто в курсе. И кстати, как этот идентификатор 2FB3-5C08 называется?

MRX256 ★
04.01.20 02:06:13 MSK

Можно. gparted -> правой мышкой по разделу -> дальше интуитивно понятно.
rmu ★★
( 04.01.20 02:18:23 MSK )
anonymous
( 04.01.20 02:19:39 MSK )
Ответ на: комментарий от rmu 04.01.20 02:18:23 MSK

Можно. gparted -> правой мышкой по разделу -> дальше интуитивно понятно.
Нажал правой кнопкой, вероятно надо щелкнуть на «изменить имя раздела» но у меня эта функция не активна. Как быть?
MRX256 ★
( 04.01.20 02:23:26 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 02:23:26 MSK
anonymous
( 04.01.20 02:25:34 MSK )
Ответ на: комментарий от anonymous 04.01.20 02:25:34 MSK

Отмонтировал и по прежнему кнопка не активна.
MRX256 ★
( 04.01.20 02:28:49 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 02:28:49 MSK
А какая файловая система на разделе?
anonymous
( 04.01.20 02:33:19 MSK )
Ответ на: комментарий от MRX256 04.01.20 02:28:49 MSK
Утилиты может нужны, типа ext2label, ntfslabel, mlabel и так далее для полноценной работы, но может ты другое спрашиваешь, чем просто изменение label
One ★★★★★
( 04.01.20 02:34:30 MSK )
Ответ на: комментарий от anonymous 04.01.20 02:33:19 MSK

А какая файловая система на разделе?
MRX256 ★
( 04.01.20 02:34:41 MSK ) автор топика
Ответ на: комментарий от anonymous 04.01.20 02:33:19 MSK

А какая файловая система на разделе?
Кстати, файловую систему можно сменить без форматирования MicroSD/SD карты?
MRX256 ★
( 04.01.20 02:35:40 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 02:35:40 MSK
Нет нельзя, ты точно label(метка в русской локализации) менять пытаешься?
anonymous
( 04.01.20 02:38:56 MSK )
Ответ на: комментарий от anonymous 04.01.20 02:38:56 MSK

ты точно label(метка в русской локализации) менять пытаешься?
MRX256 ★
( 04.01.20 02:43:08 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 02:43:08 MSK
Проверь наличие mtools, https://www.archlinux.org/packages/extra/x86_64/mtools/ оно опционально, мог gparted не подтянуть
One ★★★★★
( 04.01.20 02:44:35 MSK )
Ответ на: комментарий от anonymous 04.01.20 02:33:19 MSK

А какая файловая система на разделе?
А файловая система играет роль для изменения этого идентификатора?
MRX256 ★
( 04.01.20 02:45:58 MSK ) автор топика
Ответ на: комментарий от One 04.01.20 02:44:35 MSK

Бесконечно благодарен за ссылку, но к сожалению я там ничего не понял.
MRX256 ★
( 04.01.20 02:47:13 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 02:45:58 MSK
Да для некоторых файловых надо доустанавливать утилиты для работы с ними. Сверху товарищ подсказал как называется для фат
anonymous
( 04.01.20 02:49:35 MSK )
Ответ на: комментарий от MRX256 04.01.20 02:47:13 MSK
Надо проверить установлен ли у тебя этот пакет. В установка удаление программ или что у тебя там вбиваешь в поиск и смотришь что установлено
anonymous
( 04.01.20 02:51:25 MSK )
Ответ на: комментарий от anonymous 04.01.20 02:49:35 MSK

Да для некоторых файловых надо доустанавливать утилиты для работы с ними. Сверху товарищ подсказал как называется для фат
Хоршо, но только я не понял что именно надо доустановить конкретно мне с моим фат?
MRX256 ★
( 04.01.20 02:52:32 MSK ) автор топика
Ответ на: комментарий от anonymous 04.01.20 02:51:25 MSK
Лучше скажи какой у тебя дистр подскажут точнее
anonymous
( 04.01.20 02:53:03 MSK )
Ответ на: комментарий от MRX256 04.01.20 02:52:32 MSK
В разных дистрах по разному может пакет называться
anonymous
( 04.01.20 02:54:18 MSK )

Чота уже третья серия содомии с дохлым картридером пошла.
K50
( 04.01.20 02:55:55 MSK )
Ответ на: комментарий от anonymous 04.01.20 02:53:03 MSK

Лучше скажи какой у тебя дистр подскажут точнее
У меня Дебиан, я установил только что mtools это оно?
MRX256 ★
( 04.01.20 02:56:02 MSK ) автор топика
Ответ на: комментарий от K50 04.01.20 02:55:55 MSK

Чота уже третья серия содомии с дохлым картридером пошла.
А ты наблюдательный )) Это финальная затея уже.
MRX256 ★
( 04.01.20 02:56:56 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 02:56:02 MSK
dosfstools еще и возможно перезагрузиться прийдется
anonymous
( 04.01.20 02:59:25 MSK )
Ответ на: комментарий от anonymous 04.01.20 02:59:25 MSK

dosfstools еще и возможно перезагрузиться прийдется
dosfstools уже установлен. Посмотри, пожалуйста еще раз тот же скриншот что и ранее, вот он https://d.radikal.ru/d22/2001/3e/7e4eb82adee6.png и подскажи какую кнопку нажать, у меня активных кнопок стало больше, но не все.
MRX256 ★
( 04.01.20 03:01:32 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 03:01:32 MSK
Установить метку,но хз почему не активна
anonymous
( 04.01.20 03:05:39 MSK )
Ответ на: комментарий от anonymous 04.01.20 03:05:39 MSK

Установить метку,но хз почему не активна
А тип раздела, в моем случае W95 FAT32 (LBA) (Загрузочный) имеет значение?
MRX256 ★
( 04.01.20 03:13:06 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 03:13:06 MSK
Это если какой то программой делал загрузочную флешку, то бывает что не позволяет
anonymous
( 04.01.20 03:19:53 MSK )
Ответ на: комментарий от anonymous 04.01.20 03:19:53 MSK

Это если какой то программой делал загрузочную флешку, то бывает что не позволяет
Последний раз карта форматировалась в смартфоне.
MRX256 ★
( 04.01.20 03:22:23 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 03:22:23 MSK
Откуда тогда загрузочый флаг? Попробуй убрать флаги. Нет возможности слить инфу и пересоздать таблицу раделов?
anonymous
( 04.01.20 03:28:50 MSK )
Ответ на: комментарий от MRX256 04.01.20 02:35:40 MSK

Кстати, файловую систему можно сменить без форматирования MicroSD/SD карты?
А ты понимаешь что такое файловая система и форматирование?
Tanger ★★★★★
( 04.01.20 03:42:09 MSK )
anonymous
( 04.01.20 04:55:47 MSK )
Ответ на: комментарий от anonymous 04.01.20 03:28:50 MSK

Откуда тогда загрузочый флаг? Попробуй убрать флаги.
Убрал флаги, не помогло.
Нет возможности слить инфу и пересоздать таблицу раделов?
Это крайняя мера за которую скорее всего не возьмусь.
MRX256 ★
( 04.01.20 13:38:30 MSK ) автор топика
Ответ на: комментарий от anonymous 04.01.20 02:54:18 MSK

В разных дистрах по разному может пакет называться
Вспомнил что рядом есть live дистрибутив Xubuntu, загрузил его, так из коробки есть Gparted но ситуация такая же как и в Debian, кнопки не активны. Может подскажешь как этот пакет называется для Xubuntu? Попробую в live режиме это дело сделать.
MRX256 ★
( 04.01.20 13:40:14 MSK ) автор топика
Ответ на: комментарий от MRX256 04.01.20 13:40:14 MSK
Может подскажешь как этот пакет называется для Xubuntu?
Ё-маё! Ты же fdisk -ом пользовался, когда показывал, что ядро видит твою флеху. Ну так пересоздай им разделы!
anonymous
( 04.01.20 13:53:52 MSK )
Ответ на: комментарий от anonymous 04.01.20 13:53:52 MSK
Так он не пересоздать хочет , а метку разделу задать
anonymous
( 04.01.20 13:57:35 MSK )
Гляньте на вывод lsusb , полагаю, там будет строчка, содержащая 2fb3:5c08. Если так, то можно почитать
https://manpages.debian.org/stretch/udisks2/udisks.8.en.html
про /etc/udisks2/IDENTIFIER.conf и про то, что туда можно вписать.
Возможно, при наличии метки раздела, она будет использоваться для точки монтирования и без посторонних действий. Посмотреть текущую метку и поставить новую на разделе FAT можно, например, так:
sudo fatlabel /dev/sdb1 sudo fatlabel /dev/sdb1 MY_FLASH
PS. fatlabel может называться (раньше назывался) dosfslabel.
bormant ★★★★★
( 04.01.20 13:57:55 MSK )
Последнее исправление: bormant 04.01.20 14:06:37 MSK (всего исправлений: 3)
Ответ на: комментарий от anonymous 04.01.20 13:57:35 MSK
Так он не пересоздать хочет , а метку разделу задать
Как переименовать sd карту на андроиде?
Перепрошил телефон на новый андроид, теперь имя карты памяти состоит из какой-то белиберды.
Как переименовать карту?
Как открыть редактор реестра на android?
Голосование за лучший ответ
А никак. Это же Линукс (Unix). Там нет дисков как в Windows на компе. Ты можешь переименовать только название папок, которые обозначают диски. Для этого тебе нужны Root-права + нормальный файловый менеджер, типа «FX Explorer» или «ES Explorer». Там открывай любые файлы и папки, и переименовывай как хочешь.
На Андроиде можно только стереть уже имеющееся имя путём форматирования флешки или SD-карты штатным способом, если таковой имеется. При форматировании стирается всё, учтите это!
Как sd карту сделать основной памятью телефона
Как sd карту сделать основной памятью смартфона или планшета
Если у Вас в телефоне или планшете мало памяти, а Вы хотите, чтобы техника работала быстро и качественно – установите дополнительную sd карту памяти.
Но этим не обойтись ,важно так же знать как sd карту сделать основной памятью. То есть , сделать так, чтобы все документы и файлы телефона сохранялись на съемном носителе, не занимая при этом основную память телефона.
Маленький совет – помните, чем больше памяти будет на флешке – тем лучше. Процессор телефона не будет «подвисать» и тормозить всю работу устройства.
Так же перед тем, как делать sd карту сделать основной памятью своего телефона, его нужно правильно подготовить к этой операции. Минимальное условие – установить для работы бесплатную программу «Total Commander», скачать которую можно на Play Market.
Учтите, что после того, как Вы сделаете sd карту основной памятью, у Вас не будут запускатся приложения, которые Вы перенесли. По этому перед тем, как начать установку карты нужно или переместить приложения на внутреннею память телефона или удалить их.
Дальше – по самой установке. Первое, что необходимо сделать – запустить «Total Commander»или другой менеджер файлов и зайти в корень файловой системы под папкой с названием «etc», в конце списка Вы должны найти фал с названием «vold.fstab» и выбираем функцию редактировать файл.
В отрытом файле перед пользователем появиться много букв и символов, среди которых нам нужно будет выделить самое необходимое после строчки ##example of a standard sdcard найти ряд dev_mounth sdcard и там в верхней строчке будет писать sdcard1 ,а в следующей sdcard0 или sdcard2. Ваша главная задача заменить нолик на единичку в этой строке, сохранить изменения и выйти с программы.
После этого телефон необходимо перезагрузить и проверить есть ли измениня в настрйоках памяти.
Как видете, после урока как sd карту сделать основной памятью можно запросто оптимизировать свой телефон.