簡體   English   中英

嘗試從WebView獲取位置時出現Android“ SQLite數據庫無法從/CachedGeoposition.db加載”錯誤

[英]Android “SQLite database failed to load from /CachedGeoposition.db” error when trying to get location from webview

我正在創建一個使用webkit和chrome客戶端的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地理數據庫無法打開

我已經進行了大量的谷歌搜索,雖然我看到有幾個人遇到同樣的問題,但是我卻沒有在任何地方看到解決方案。 如果有人需要我提供更多信息,請隨時告訴我。

因此,這個線程幾乎解決了這個問題:

三星Galaxy設備無法使用geolocation.getCurrentPosition

簡而言之,我正在使用三星銀河電話,而三星銀河電話似乎對html5地理位置有問題。

您應該添加以下行:

mWebView.getSettings().setGeolocationDatabasePath(getFilesDir().getPath());

地理位置使用數據庫在會話之間保留緩存的位置和權限。 該調用設置數據庫的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM