Android 2.2 localstorage

#android #local-storage

#Android #локальное хранилище

Вопрос:

В Android 2.2 я не могу получить значение локального хранилища после принудительного закрытия приложения.ЕСЛИ у вас есть какие-либо предложения…Пожалуйста, взгляните на мой код:

     WebSettings  ws= appView.getSettings();
    ws.setDatabasePath("/data/data/com.decodeSoutions.hive/app_database");
    ws.setJavaScriptEnabled(true);
    ws.setDatabaseEnabled(true);                                                                                                                       
    ws.setDomStorageEnabled(true);
  

Спасибо за поддержку

Ответ №1:

У меня была та же проблема. Сначала я загружаю свои данные с помощью .loadDataWithBaseURL() с каталогом активов в качестве базового URL, и возникает проблема. В Android 2.1 это отлично работает с setDomStorageEnabled(true), но в 2.2 вам нужно выполнить следующее.

Сначала:

     webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setDatabaseEnabled(true);
    webView.getSettings().setDatabasePath("/data/data/"  getPackageName() "/databases/");
  

Теперь начинается сложная часть:

Запишите весь HTML-код в файл, потому что функции «loadData» каким-то образом отключают localstorage.

     try {
        FileOutputStream fos = openFileOutput("test.html", Context.MODE_PRIVATE);
        fos.write(yourHTMLString.getBytes());
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    webView.loadUrl("file://"   getFilesDir().getAbsolutePath()  "/test.html");
  

Но будьте осторожны, если вы загружаете css или js relative в свой html, потому что ваш базовый путь не задан. Чтобы исправить это, введите «file:/// android_assets /» в свой html-код, например:

     <link rel="stylesheet" href="file:///android_asset/${stylesheet}" type="text/css" />
    <script type="text/javascript" src="file:///android_asset/js/jquery.js"></script>
    <script type="text/javascript" src="file:///android_asset/js/jstorage.js"></script>
  

Надеюсь, это кому-то поможет. Это стоит мне часов!