2

Chrome クライアントで webkit を使用する Android アプリを作成しています。Web ページから要求されたときに現在の場所を取得できるようにしたい。私が設定した Web ページは、通常のブラウザで問題なく動作します。ただし、webkit で Web ページにアクセスしようとすると、次のエラーが発生し続けます。

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

私はたくさんのグーグルをしましたが、同じ問題を抱えている人が何人かいますが、解決策はどこにもありません。誰かが私にさらに情報を提供する必要がある場合は、お気軽にお知らせください。

4

2 に答える 2

0

次の行を追加する必要があります。

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

Geolocation は、データベースを使用して、キャッシュされた位置とアクセス許可をセッション間で保持します。この呼び出しは、データベースの場所を設定します。

于 2014-08-22T09:29:26.047 に答える
0

したがって、このスレッドによってほとんど解決されます。

Samsung Galaxy デバイスは geolocation.getCurrentPosition を使用できません

要するに、私はサムスンのギャラクシー電話を使用していましたが、サムスンのギャラクシー電話は html5 ジオロケーションに問題があるようです。

于 2013-10-03T22:43:00.123 に答える