5

私は Android コードを試しています。HTML 5 ローカル ストレージを使用して 1 つの値を保存したいと考えています。この演習では、次のような単純なページを使用します: http://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_webstorage_local_clickcount

私のマニフェストでは、インターネットにアクセスできます。最小 SDK は 7 です。

ここに私の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());
}

私の問題は、アプリを閉じると、ローカルに保存された値がなくなっていることです。デフォルトのブラウザーを使用して同じページを参照できます。値はエミュレーターを閉じた後も保持されます。これはまさに私が探している動作です。

これはおそらく非常に単純なものです....何かアイデアはありますか?

4

3 に答える 3

7

空の文字列 DatabasePath が問題のようです。同様のコードを試してみましたが、空の文字列パスを使用すると、アプリの終了後に値が保持されません。特定のデータベース パスを定義すると、値は期待どおりに保持されます。

試す:

webSettings.setDatabasePath("/data/data/"+this.getPackageName()+"/databases/");
于 2012-05-11T19:59:20.627 に答える
1

すべてのデバイス(特にICS)で動作させることができませんでした-データベースパス、DOMStorageの有効化などでも-代わりにCookieを使用すると役に立ちました。

于 2012-07-10T08:57:56.110 に答える