2012-05-11 2 views
2

Я экспериментирую с кодом Android: Я хотел бы сохранить одно значение, используя локальное хранилище HTML 5. Для этого упражнения я с помощью страницы так просто, как это: http://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_webstorage_local_clickcountИспользование локального хранилища на веб-обозревателе Android

Мой манифест действительно позволит мне попасть в Интернет, и это мин из 7. SDK

Вот мой Java-код:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    webview = (WebView) findViewById(R.id.webview); 
    WebView webView = (WebView) findViewById(R.id.webview); 
    webView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); 
    WebSettings webSettings = webview.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setDatabasePath(""); 
    webSettings.setDomStorageEnabled(true); 
    webview.setWebChromeClient(new WebChromeClient()); 
    webview.loadUrl("http://www.xyz.com/test.html"); 
    ///xyz.com/test.html is a sample :) 
    webview.setWebViewClient(new HelloWebViewClient()); 
} 

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

Возможно, это что-то чрезвычайно простое .... любые идеи?

ответ

6

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

Try:

webSettings.setDatabasePath("/data/data/"+this.getPackageName()+"/databases/"); 
+0

Да, сэр ... это именно то, что мне нужно !!!! Большое спасибо!! – MrM

+0

@MrM, сэр, если ваша проблема решена, вы должны отметить ее как правильный ответ и повысить ее, вы видите тик в левой части ответа? – neevek

1

Не удалось заставить его работать на всех устройствах (особенно с ICS) - даже путь к базе данных, что позволяет DOMStorage и т.д. - использование куки вместо помогли мне.

2

Если ваше приложение использует несколько веб-просмотров, у вас все еще будут проблемы: localStorage неправильно распределяется по всем веб-просмотрам.

Если вы хотите разделить одни и те же данные в нескольких веб-просмотрах, единственный способ восстановить его с помощью базы данных java и интерфейса javascript.

This page на github показывает, как это сделать.

надеюсь, что эта помощь!

+0

Я также хотел бы упомянуть, что существует гибридная структура Cobalt (http://cobaltians.org), которая может помочь вам управлять несколькими веб-просмотрами в ваших родных приложениях. это инструмент как для разработчиков, так и для веб-разработчиков. Вам стоит это увидеть. –

Смежные вопросы