2013-09-06 3 views
3

Я очень новичок в кодировании android, java и javascript.Невозможно получить GPS-координаты с помощью Javascript webview в Android

Я пытаюсь получить мои текущие координаты GPS и отобразить их на устройстве Android. Я использую webview, и большая часть кода написана в javascript.

Однако мой код не работал как пустой белый экран с кодом ошибки 2, когда мое приложение развертывается на моем устройстве Android.

Я просматривал множество сайтов, и я все еще не могу решить эту проблему.

Любая помощь пожалуйста?

Коды для различных файлов расположены ниже.

map.js

navigator.geolocation.watchPosition(
    function(position){ 
     var lat = position.coords.latitude; 
     var lng = position.coords.longitude; 
     document.getElementById("myPos").innerHTML = "lat:"+lat+"<br>long:"+lng; 
    }, 
    function(error){ 
     document.getElementById("myPos").innerHTML = "Error Code:"+error.code; 
    } 
); 
setTimeout("window.scrollTo(0,1)", 10); 

main.css

body { 
    width: 320px; 
    height:480px; 
    background-color : white; 
} 
#myMap { 
    position : absolute; 
    left : 0px; 
    top: 0px; 
    width: 320px; 
    height: 480px; 
} 

MainActivity.java

package com.example.midnightmap; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.webkit.GeolocationPermissions; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     WebView webView = (WebView)findViewById(R.id.webView); 
     webView.getSettings().setJavaScriptEnabled(true); 
     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); 
      } 
      }); 
     //webView.setWebChromeClient(new WebChromeClient()); 
     webView.loadUrl("file:///android_asset/www/index.html"); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.midnightmap" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.midnightmap.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

ответ

3

я понял, я ушел из этого в моем файле Manifest.xml Мое приложение работает после того, как я добавить в

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

Хорошая работа фиксируя его. Вы можете пометить свой собственный ответ как правильный и получить некоторую репутацию за него, а также помочь людям, которые ищут ту же проблему в будущем. – Pedantic

Смежные вопросы