0

Android WebView を使用して単純な localStorage の例を作成しようとしています。アプリを閉じるときに問題が発生します。アプリを起動するたびに、localStorage に保存されている値が消えます。私はそれをグーグルで検索しましたが、適切な解決策を見つけることができませんでした。ここに、HTML、Java、マニフェストのコード サンプルを置きます。どんな助けでも大歓迎です。

HTML :

<!DOCTYPE html>
<html>
<head>
<script>
function clickCounter()
{
if(typeof(Storage)!=="undefined")
  {
  if (localStorage.clickcount)
    {
    localStorage.clickcount=Number(localStorage.clickcount)+1;
    }
  else
    {
    localStorage.clickcount=1;
    }
  document.getElementById("result").innerHTML="You have clicked the button " + localStorage.clickcount + " time(s).";
  }
else
  {
  document.getElementById("result").innerHTML="Sorry, your browser does not support web storage...";
  }
}
</script>
</head>
<body>
<p><button onclick="clickCounter()" type="button">Click me!</button></p>
<div id="result"></div>
<p>Click the button to see the counter increase.</p>
<p>Close the browser tab (or window), and try again, and the counter will continue to count (is not reset).</p>
</body>
</html>

ジャワ:

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setDatabasePath(this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath());
webView.loadUrl("http://www.example.com/sample.html");  
setContentView(webView);

マニフェスト:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

許可行はタグの下に配置されますが、タグの外側に配置されます

シナリオは次のとおりです: -モバイル デバイスのインターネット接続をオフにする -アプリを起動する -WebView 内のページを開く -ボタンを数回タップする -アプリを閉じる (タスク マネージャー内で閉じる) -インターネットをオンにするモバイルデバイスの接続 - アプリを起動 - ページを開く - ボタンを数回タップすると最初からカウントされます

試しながらさまざまなシナリオを作成できます。主な問題は、webView が localStorage を適切に使用するように設定する方法です。

4

1 に答える 1

0

これは webview のバグのようです。私は実際に webview 内で 3 つの異なるページを開こうとしていて、localStorage データを失っていました。このアクティビティを 3 つのアクティビティに分割し、それぞれが 1 ページのみを開くようにしました。そして、問題は消えました。

于 2013-08-28T13:18:02.540 に答える