2012-07-01 12 views
6

私はAndroid、Java、およびJavaScriptのコーディングではとても新しいです。AndroidのブラウザでJavascriptを使用してGPS座標を取得できません

私は現在のGPS座標を取得し、その後Android搭載デバイスで追跡しようとしています。私はwebviewを使用しており、コードの大部分はjavascriptで書かれています。

私は数日間多くの検索を行い、さまざまな方法で試しましたが、アンドロイドデバイスでGPS座標を取得できません。コードを見て、なぜ私がGPSの位置を取得していないのか理解してください。

- 1.他のセンサーアプリをダウンロードして確認しました。現在のGPS座標が表示されています(GPSがデバイス上で動作しています)。 2.コードを実行すると、通知領域にGPS検索アイコンが表示されますが、点滅し続けますが、修正されません。 3.ラップトップブラウザでjavascriptを使用してHTMLファイルのみを実行すると、場所を共有する権限が要求され、座標が与えられますが、同じファイルにはアンドロイドには何も表示されません。

以下のコードを見て、これを理解してください。私は多くを試して、これを私の最後の希望として掲示しています。

マニフェストファイルには、次の権限を持っている -

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<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" /> 

アンドロイドの主なJavaコードが持っている -

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    webView = new WebView(this); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setLoadWithOverviewMode(true); 
    webView.getSettings().setUseWideViewPort(true); 
    webView.loadUrl("file:///android_asset/mymap.html"); 
    setContentView(webView); 
} 

とJavaScriptとHTMLファイルがある -

<!DOCTYPE html> 
<html> 
<body onunload="OnUnload()" onload="getLocation()"> 
<p id="demo">Your coordinates:</p> 
<script> 
var watchID; 
var x=document.getElementById("demo"); 
function getLocation() 
    { 
    if (navigator.geolocation) 
    { 
     var options = {maximumAge:600000, timeout:100000, enableHighAccuracy: true}; 
     watchID = navigator.geolocation.watchPosition(showPosition,showError,options); 
    } 
    else{x.innerHTML="Geolocation is not supported by this browser.";} 
    } 
function showPosition(position) 
    { 
    x.innerHTML="Latitude: " + position.coords.latitude + 
    "<br />Longitude: " + position.coords.longitude; 
    } 
function showError(error) 
    { 
    switch(error.code) 
    { 
    case error.PERMISSION_DENIED: 
     x.innerHTML="User denied the request for Geolocation." 
     break; 
    case error.POSITION_UNAVAILABLE: 
     x.innerHTML="Location information is unavailable." 
     break; 
    case error.TIMEOUT: 
     x.innerHTML="The request to get user location timed out." 
     break; 
    case error.UNKNOWN_ERROR: 
     x.innerHTML="An unknown error occurred." 
     break; 
    } 
    } 

function OnUnload() 
{ 
    alert ("The current document will be unloaded!"); 
    navigator.geolocation.clearWatch(watchID); 
} 
</script> 
</body> 
</html> 

ありがとうございます。 axs

答えて

7

もう一度検索して解決策を見つけました。私は答えを探している人のために私の質問に答えとしてこれらのリンクをここに掲示しています。

URLをロードする前に私のJavaコードにこれらの行を追加してから、私は地理座標を見ることができました。詳細については

webView.getSettings().setGeolocationEnabled(true); 
    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); 
     } 
     }); 

これら二つのリンク続く - アンドロイド6.0電話(他のバージョンについてはよく分からない)で

-1

を、これがためにそれを殺しました。私の私のbuild.gradleファイル:

その

targetSdkVersion 21 

を削減

は私の問題を修正しました。

関連する問題