我正在创建一个使用带有 chrome 客户端的 webkit 的 android 应用程序。我希望能够在从网页请求时获取当前位置。我设置的网页适用于普通浏览器就好了。但是,当我尝试访问 webkit 中的网页时,我不断收到此错误:
ERROR:
SQLite database failed to load from /CachedGeoposition.db
Cause - unable to open database file
external/webkit/Source/WebCore/platform/sql/SQLiteDatabase.cpp(71) : bool
WebCore::SQLiteDatabase::open(const WTF::String&, bool)
这是我的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
这是我设置 webview 和 chrome 客户端的 android 代码:
WebView webView = (WebView)findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setGeolocationEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return false;
};
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
});
我打电话时的javascript错误:
navigator.geolcation.getCurrentPosition( success_function, fail_function )
既不会调用成功函数也不会调用失败函数。
这里有一个非常相似,几乎相同的问题:Android webview geoposition database failed to open
我已经进行了大量的谷歌搜索,虽然我看到一些人有同样的问题,但我还没有在任何地方看到解决方案。如果有人需要我提供更多信息,请随时告诉我。