Android WebView (Webkit、ChromeClient) 内で動作する HTML5 localStorage の例を取得しようとしています。しかし、私は運がありません。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) エラー/SQLiteLog(28735): (14) [00bb9c9ce4] 07-12 13:57:47.005 の行 30241 でファイルを開くことができません: エラー/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 ] 外部/webkit/Source/WebCore/platform/sql/SQLiteDatabase.cpp(71) : bool WebCore::SQLiteDatabase::open(const WTF::String&, bool)デシベルの原因 - データベース ファイル 07-12 13:57:47.005 を開くことができません: DEBUG/WebKit(28735): [ 28735:28758 D/WebKit ] 外部/webkit/Source/WebCore/platform/sql/SQLiteDatabase.cpp(71) : bool WebCore::SQLiteDatabase::open(const WTF::String&, bool)デシベルの原因 - データベース ファイル 07-12 13:57:47.005 を開くことができません: DEBUG/WebKit(28735): [ 28735:28758 D/WebKit ] 外部/webkit/Source/WebCore/platform/sql/SQLiteDatabase.cpp(71) : bool WebCore::SQLiteDatabase::open(const WTF::String&, bool)