Как получить абсолютный путь к внутреннему хранилищу в Android

Внутренний путь к хранилищу

Рассмотрим приведенную выше картинку. Он показывает папки и файлы во внутренней памяти. Моя проблема в том, что я не могу получить абсолютный путь к внутренней памяти. Я пытался использовать

Строковый путь = getFilesDir().getAbsolutePath();

но это дает мне путь к моему хранилищу приложений. Моя цель - сделать резервную копию файла из личного хранилища моего приложения в верхней части внутреннего хранилища. И я не могу найти решение в Интернете и ни при переполнении стека. Предложите решение этой проблемы!


person Dilazak    schedule 06.10.2017    source источник


Ответы (3)


Environment.getExternalStorageDirectory();

Вернуть основной каталог общего/внешнего хранилища.

Примечание: пусть вас не смущает слово «внешний». Этот каталог лучше рассматривать как медиа/общее хранилище. Это файловая система, которая может содержать относительно большой объем данных и является общей для всех приложений (не требует разрешений). Традиционно это SD-карта, но она также может быть реализована как встроенное хранилище в устройстве, которое отличается от защищенного внутреннего хранилища и может быть смонтировано как файловая система на компьютере.

File dir = Environment.getExternalStorageDirectory();
String path = dir.getAbsolutePath();
person Nabin Bhandari    schedule 06.10.2017
comment
я хочу путь к внутреннему хранилищу, а не к внешнему - person Dilazak; 06.10.2017
comment
Поверьте, это внутреннее хранилище. - person Nabin Bhandari; 06.10.2017
comment
что если у меня есть и внутренняя память и SD-карта? - person Dilazak; 06.10.2017
comment
Это даст вам внутренний каталог общего хранилища. Просто попробуйте! - person Nabin Bhandari; 06.10.2017
comment
Хорошо, это дает мне /storage/emulated/0, это одна часть, и как я могу получить хранилище SD-карты? - person Dilazak; 06.10.2017
comment
@NabinBhandari, я понял вашу точку зрения, и это работает, но почему они выбрали внешнее хранилище в качестве имени для пути к внутреннему хранилищу? Я все еще смущен вашим ответом. А также всегда ли он дает мне путь к внутреннему хранилищу или есть подвох? Я имею в виду, будет ли он выбирать путь к внешнему хранилищу, если он доступен? а также как получить доступ к внешнему каталогу хранения? - person Jay Dangar; 29.10.2018
comment
@JayDangar В терминах программирования для Android внутреннее хранилище означает хранилище, приватное для приложения, а внешнее хранилище означает хранилище вне его. Как правило, хранилище устройства считается основным внешним хранилищем. Вы не можете получить прямой доступ к вторичному внешнему хранилищу. Для этого вам нужно будет использовать Storage Access Framework. - person Nabin Bhandari; 30.10.2018
comment
@NabinBhandari, спасибо, что развеяли мои сомнения. Ценю ваш ответ и помощь. - person Jay Dangar; 30.10.2018
comment
Я думаю, что это не правильный ответ. Это дает путь к внешнему хранилищу. Внутреннее хранилище — это папка внутри вашего приложения, в которой вы сохраняете локальные файлы. - person basitj; 14.05.2020
comment
этот метод устарел, что дальше? - person nirazverma; 17.09.2020

Это возможно только с рут-доступом. Вы должны записать резервную копию на внешнее хранилище, чтобы сделать ее общедоступной. В документах Android говорится, что если вы хотите поделиться файлом с другими приложениями или сохранить этот файл даже после того, как приложение будет удалено, вы должны сохранить его на внешнем хранилище. Документация по Android

person Romadro    schedule 06.10.2017
comment
На самом деле я хотел сказать, что к верхней части внутренней памяти, а не к root - person Dilazak; 06.10.2017
comment
@Dilazak external не означает, что вы будете хранить его на SD-карте. Я рекомендую вам сделать так, как рекомендует вам документация Android. Храните общие файлы на внешнем хранилище, а личные файлы на внутреннем. - person Romadro; 06.10.2017

Попробуй это,

String path = Environment.getExternalStorageDirectory().getAbsolutePath();
person Codemaker    schedule 03.08.2020