Androidemulator — доступ к файлам в LocalApplicationData

#android #xamarin #xamarin.forms #android-device-monitor

#Android #xamarin #xamarin.forms #android-устройство-монитор

Вопрос:

Я использую xamarin forms для разработки приложения для 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 я взял, что я должен, но сам в корневом режиме, выполнив

 C:Program Files (x86)Androidandroid-sdkplatform-tools>adb root
  

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

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

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

Ответ №1:

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

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

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

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

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

Ответ №2:

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

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

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

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

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

Комментарии:

1. Чтение и запись файла из приложения Xamarin работает нормально. Но для отладки я хотел бы открыть файл с помощью монитора устройства Android.