Androidemulator - доступ к файлам в LocalApplicationData - PullRequest
0 голосов
/ 23 апреля 2019

Я использую формы xamarin для разработки приложения для Android. Я могу сохранить файл через

    var fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), $"appsettiings.txt");
    var data = JsonConvert.SerializeObject(this);
    File.WriteAllText(fileName, data);

Когда я отлаживаю, я вижу, что файл должен храниться в

/data/user/0/<applicationame>/files/.local/share/appsettiings.txt

Мне нравится видеть, действительно ли файл сохранен и каков его контент. Я открыл монитор устройства Android, но папка с данными была «пустой». Из какого-то другого SO-случая я взял, что должен, но сам в режиме root, выполнив

C:\Program Files (x86)\Android\android-sdk\platform-tools>adb root

Теперь папка данных содержит данные, и я могу перейти к папке с файлами, но эта папка кажется пустой.

Когда я снова запускаю приложение и проверяю в коде, существует ли файл, это действительно происходит.

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

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Вы можете использовать adb pull, чтобы скопировать файл на локальный компьютер и посмотреть его содержимое следующим образом:

adb root
adb pull /data/user/0/<applicationame>/files/.local/share/appsettiings.txt [LOCAL_FOLDER]

, затем вы можете использовать adb shell, а затем rm -f, чтобы удалить его, вот так:

adb shell
su
rm -f /data/user/0/<applicationame>/files/.local/share/appsettiings.txt 

Поскольку запрашиваемый файл находится внутри папки / data, для его получения необходимо иметь соответствующую привилегию root, поэтому перед командой adb pull необходимо выполнить команду adb root ивам нужно сделать su перед удалением файла.

0 голосов
/ 23 апреля 2019

Если я не ошибаюсь, если вы сохраните файл с вашим подходом, он должен существовать, как вы уже проверяли с помощью метода .Exists.

Я не совсем уверен, вы просто пытаетесь прочитатьсодержание из файла?Или вы хотите получить к нему доступ из-за пределов приложения?

Если вы хотите просто прочитать содержимое, вы можете получить к нему доступ с помощью

string content= File.ReadAllText(your file path);

иустановить точку останова (F9) на следующей строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...