Android WebView localStorage

ベンクロウハースト

Android WebView(Webkit、ChromeClient)内でHTML5localStorageの例を機能させようとしています。しかし、私は運がありません。WebViewからではなく、電話のブラウザからすべてが機能します。

アクティビティ:

public class BrowserActivity extends Activity {
    @Override
    public final void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        WebView browser = (WebView) findViewById(R.id.webView);

        browser.setHapticFeedbackEnabled(true);        
        browser.getSettings().setJavaScriptEnabled(true);
        browser.getSettings().setSavePassword(false);

        browser.getSettings().setDatabaseEnabled(true);
        browser.getSettings().setDomStorageEnabled(true);
        browser.getSettings().setDatabasePath("/data/data/" + browser.getContext().getPackageName() + "/databases/");

        browser.loadUrl("http://my.app.com:10099");
    }
}

マニフェスト:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="RestrictedBrowser"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="16"/>
    <application android:label="@string/app_name">
        <activity android:name="RestrictedBrowser.BrowserActivity"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.Black.NoTitleBar"
                  android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
</manifest>

エラー

WARN / System.err(3961):android.database.sqlite.SQLiteConstraintException:列packagenameが一意ではありません(コード19)07-12 13:57:43.425:WARN / System.err(3961):android.database.sqliteで.SQLiteConnection.nativeExecuteForChangedRowCount(ネイティブメソッド)07-12 13:57:43.425:WARN / System.err(3961):android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:857)WARN / System.err(3961) ):android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)でWARN / System.err(3961):android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)でWARN / System.err (3961):android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1665)でWARN / System.err(3961):android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594)でERROR / SQLiteLog (28735):(14)[00bb9c9ce4]の行30241でファイルを開くことができません07-12 13:57:47.005:ERROR / SQLiteLog(28735):( 14)os_unix.c:30241:(2)open(/NotificationPermissions.db)-07 -12 DEBUG / WebKit(28735):SQLiteデータベースを/NotificationPermissions.dbからロードできませんでした原因-データベースファイルを開くことができません07-12 13:57:47.005:DEBUG / WebKit(28735):[28735:28758 D / WebKit] external / webkit / Source / WebCore / platform / sql / SQLiteDatabase.cpp(71):bool WebCore :: SQLiteDatabase :: open(const WTF :: String&、bool)28758 D / WebKit] external / webkit / Source / WebCore / platform / sql / SQLiteDatabase.cpp(71):bool WebCore :: SQLiteDatabase :: open(const WTF :: String&、bool)28758 D / WebKit] external / webkit / Source / WebCore / platform / sql / SQLiteDatabase.cpp(71):bool WebCore :: SQLiteDatabase :: open(const WTF :: String&、bool)

サイバーフロア

使用する前に、データベースディレクトリを作成する必要があります。

次のコードを使用します

String databasePath = browser.getContext().getDir("databases", 
                                   Context.MODE_PRIVATE).getPath(); 
browser.getSettings().setDatabasePath(databasePath); 

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事