亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

android webview地理定位

android webview地理定位

慕桂英546537 2019-07-31 18:11:14
android webview地理定位我必須在a中檢索用戶的位置WebView。我使用以下Javascript執行此操作:function getLocation() {    navigator.geolocation.getCurrentPosition(displayLocation, handleError);}但是權限請求彈出窗口永遠不會打開。我設置了這些設置:ws.setJavaScriptEnabled(true);ws.setGeolocationEnabled(true);ws.setJavaScriptCanOpenWindowsAutomatically(true);從一個位置訪問用戶位置的正確方法是WebView什么?
查看完整描述

3 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

  • 必須在WebView使用中啟用JavaScriptWebSettings.setJavaScriptEnabled(true);

  • 該應用需要許可 ACCESS_FINE_LOCATION

  • WebView必須使用自定義WebChromeClient它實現WebChromeClient.onGeolocationPermissionsShowPrompt()。該方法被調用WebView以獲得向JavaScript公開用戶位置的許可。(對于瀏覽器,我們向用戶顯示提示。)默認實現不執行任何操作,因此永遠不會獲得權限,并且該位置永遠不會傳遞給JavaScript。一個總是授予權限的簡單實現是......

    webView.setWebChromeClient(new WebChromeClient() {
     public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
        callback.invoke(origin, true, false);
     }});

地理定位使用數據庫在會話之間保留緩存的位置和權限。使用設置數據庫的位置WebSettings.setGeolocationDatabasePath(...)。如果未設置數據庫的位置,則永久存儲將不可用,但Geolocation將繼續正常運行。要設置數據庫的位置,請使用...

webView.getSettings().setGeolocationDatabasePath( context.getFilesDir().getPath() );



查看完整回答
反對 回復 2019-07-31
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

您是否在清單中聲明了該許可?


<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

您可能還需要聲明其他位置權限,例如:


<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" />


查看完整回答
反對 回復 2019-07-31
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

接受或拒絕用戶位置的對話框由程序員設計:D。正如Chris Cashwell所說,你只需使用這樣的回調:

webview.setWebChromeClient(new WebChromeClient(){
  public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
    // callback.invoke(String origin, boolean allow, boolean remember);
    callback.invoke(origin, true, false);
  }}

在某些情況下,HTML5需要使用存儲,您必須啟用一些屬性,以便webview具有正常運行的完全訪問權限。

    // HTML5 API flags
    webView.getSettings().setAppCacheEnabled(true);
    webView.getSettings().setDatabaseEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);


查看完整回答
反對 回復 2019-07-31
  • 3 回答
  • 0 關注
  • 682 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號