Читать файл из приложения с тем же именем пакета - PullRequest
0 голосов
/ 08 октября 2019

У меня есть приложение в магазине игр, которое я написал для Java и Android Studio, и я хочу заменить его на приложение, написанное на C # и Xamarin.

Все идет гладко, кроме одноговещь. Мой код Xamarin не может читать файлы, которые есть в старом Java-приложении, в котором хранятся пользовательские настройки и данные.

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

Вот как я сохраняю файл в Android Studio, используя контекст действия:

byte[] data = {0, 1, 2, 3, 4};
try (FileOutputStream stream = context.get().openFileOutput("file.dat", Context.MODE_PRIVATE)) {
    stream.write(data);
}

Вот как я пытаюсь прочитатьфайл в C #

using (Stream stream = CustomClass.MainActivity.OpenFileInput("file.dat"))
{
    byte[] data = new byte[stream.Length];
    stream.Read(data, 0, data.Length);
}

Код C # не видит файл, и при использовании MainActivity.FileList () для перечисления всех файлов он там также не отображается.

Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 08 октября 2019
        string tag = "myapp";
        var file = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "file.dat");

        if (file == null || !File.Exists(file))
        {
            Log.Warn(tag, "file not exists");
        }
        else
        {
            using (var stream = File.OpenRead(file))
            {
                byte[] data = new byte[stream.Length];
                stream.Read(data, 0, data.Length);
            }
        }

читайте официальные документы для получения дополнительной информации: Хранение файлов и доступ с помощью Xamarin.Android

Поскольку нам нужно часто запускать отладочный apk, также убедитесь, что вы используете тот же keystore подпишите, вы можете сделать это, настроив хранилище ключей отладки вручную:

enter image description here

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