我有使用 javascript geolocation api 的网站,并希望它在 web 视图中打开。我在清单文件中设置了这些权限:
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
在我的活动中,我还设置了 webview 设置:
webview.getSettings().setDatabaseEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setGeolocationDatabasePath("/data/data/com.my.app/databases");
webview.getSettings().setGeolocationEnabled(true);
我还处理了 javascript 地理定位对话框:
webview.setWebChromeClient(new WebChromeClient(){
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
});
地理位置本身正在工作,但我无法将地理位置缓存到数据库中。它应该在 CachedGeoposition.db 中自行完成,但是当我启动 webview 时,我得到了这个奇怪的 SQLite 错误:
E/SQLiteLog(22653): (14) cannot open file at line 30174 of [00bb9c9ce4]
E/SQLiteLog(22653): (14) os_unix.c:30174: (2) open(/CachedGeoposition.db) -
D/WebKit (22653): ERROR:
D/WebKit (22653): SQLite database failed to load from /CachedGeoposition.db
D/WebKit (22653): Cause - unable to open database file
D/WebKit (22653):
D/WebKit (22653): external/webkit/Source/WebCore/platform/sql/SQLiteDatabase.cp
p(71) : bool WebCore::SQLiteDatabase::open(const WTF::String&, bool)
当我在文件资源管理器中检查 CachedGeoposition.db 文件是否存在时,它始终存在,并且数据库的权限设置为 -rw-------。
我是否在设置中遗漏了一些可能导致数据库无法正确打开的内容?我是 Android 新手,现在正在尝试寻找 2 天的解决方案。任何帮助将不胜感激。谢谢你。