Что может вызвать полную катастрофическую потерю файлов / данных в приложении для Android? - PullRequest
0 голосов
/ 09 марта 2019

У меня есть приложение для Android, использующее NDK.Я храню / сохраняю файлы, просто используя fopen / etc в C ++.Я использую эту функцию Java, чтобы получить местоположение хранилища и передать его в C ++:

private void SetFilePath()
{
    //String storagePath=getFilesDir().getAbsolutePath();
    String storagePath=null;
    String cachePath=getCacheDir().getAbsolutePath();

    // SDCARD
    try
    {
        String storageState = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(storageState)) storagePath=getExternalFilesDir(null).getAbsolutePath();
    }
    catch (Exception e)
    {
        Log.v(IDS.LOG,"No permission to access external storage, missing android.permission.WRITE_EXTERNAL_STORAGE");
    }
    if (storagePath==null) storagePath=getFilesDir().getAbsolutePath();
    SetFilePathNative(storagePath, cachePath);
    mStorageDir = storagePath;
}

Это функция, которую я использую в C ++ для записи файлов:

bool WriteFile(char *theFilename, char *theDataPtr, int theLen)
{
    FILE* aFile=fopen(theFilename,"w+");
    if(!aFile) return false;
    fclose(aFile);
    aFile=fopen(theFilename,"w+b");
    if(!aFile) return false;
    if (aFile)
    {
        fwrite(theDataPtr, 1, theLen,aFile);
        fclose(aFile);
        return true;
    }
    return false;
}

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

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

Есть ли что-либо в приведенном выше кодечто выглядит неправильно?Кто-нибудь может подсказать причину, по которой это может происходить?

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