Как использовать постоянное хранилище в веб-приложении Android - PullRequest
0 голосов
/ 01 апреля 2019

Я разработал приложение для Android через cordova, которое работает внутри веб-просмотра.Как я могу заставить приложение использовать persistent storage в хром?Потребляет только temporary storage.Причина, по которой мне нужно использовать persistent storage, заключается в том, что я могу запросить больше пробелов.Если я использую temporary storage и он выходит за пределы максимального лимита, временное хранилище удалит старые данные из базы данных.

Я запускаю ниже код в консоли Chrome, и это дает мне we are using 0 of 0 bytes, что означает, что есть 0пространство в постоянном хранилище, которое я могу использовать.

navigator.webkitPersistentStorage.queryUsageAndQuota (
    function(usedBytes, grantedBytes) {
        console.log('we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
    },
    function(e) { console.log('Error', e);  }
);

Затем я запускаю следующий код, чтобы запросить больше памяти:

navigator.webkitPersistentStorage.requestQuota (
    100 * 1024 * 1024, function(grantedBytes) {
        window.requestFileSystem(PERSISTENT, grantedBytes, (d) => console.log(d), e => console.error(e));

    }, function(e) { console.log('Error', e); }
);

после этого ничего не происходит, и это все еще 0 место для хранения, которое я могу использовать,Интересно, как я могу использовать постоянное хранилище в webview?Нужно ли указывать какое-либо разрешение для этого?

Разрешение для моего приложения:

<uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.INTERNET" />

Я проверил еще один вопрос Android webview & localStorage , но этосовсем по другому с моим.Я прошу предоставить разрешение на постоянное хранение для моего веб-просмотра, но этот вопрос не объясняет, как использовать persistent storage, вместо этого он использует temporary storage, который является хранилищем по умолчанию в веб-просмотре.

Я установил setDatabaseEnabled(true) для кода Java, но он не использует persistent storage.Вместо этого он использует temporary storage.

1 Ответ

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

setDatabaseEnabled () представляется единственным доступным методом:

Устанавливает, включен ли API хранилища базы данных.Значение по умолчанию false.

, даже если вы больше не можете изменить местоположение базы данных;as setDataBasePath () читает:

Этот метод устарел на уровне API 19.

Пути к базе данных управляются реализацией ивызов этого метода не будет иметь никакого эффекта.

Использование JavaScriptInterface может быть возможным обходным путем для сохранения данных;для пример .

Документация Cordova также перечисляет некоторые возможные варианты для сравнения.

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