Геолокация для просмотра в Интернете на Android

У меня есть веб-просмотр, и я хотел бы запустить Android.getLocation () из javascript, чтобы указать местоположение пользователя с помощью json, я сделал это:

MainActivity.java

[...]
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

    WebView myWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.setContentView(R.layout.activity_main);

        this.myWebView = (WebView) this.findViewById(R.id.webView);
        myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");

        myWebView.loadUrl("file:///android_asset/example.html");

        WebSettings webSettings = myWebView.getSettings();
        webSettings.setDomStorageEnabled(true);
        webSettings.setDatabaseEnabled(true);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setGeolocationEnabled(true);

        myWebView.setWebViewClient(new MyWebViewClient());
    }
[...]

WebAppInterface.java

import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.webkit.JavascriptInterface;
import org.json.JSONException;
import org.json.JSONObject;

public class WebAppInterface extends Activity {

    Context context;

    public WebAppInterface(Context context) {
        this.context = context;
    }
[...]
private LocationManager locManager;

    @JavascriptInterface
    public JSONObject getLocation() throws JSONException {
        locManager = (LocationManager) getSystemService(this.context.LOCATION_SERVICE); #Me da error en esta linea

        Location loc = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        JSONObject location = new JSONObject();
        location.put("latitude", loc.getLatitude());
        location.put("longitude", loc.getLongitude());

        return location;
    }
[...]

И, очевидно, я поставил разрешения

но при выполнении из javascript я получаю ошибку в первой строке getLocation (), и я не знаю, почему, по-видимому, все в порядке.

Большое спасибо

Проверьте это для получения дополнительной информации, stackoverflow.com/questions/5329662/android-webview-geolocat‌ ion

Aditya 07.08.2018 14:21

Еще один ... 1. КЛАСС, ПОЛУЧЕННЫЙ ДЕЙСТВИЕМ, ДОЛЖЕН ИМЕТЬ БЕЗ ПАРАМЕТРОВ КОНСТРУКТОРА 2. НЕ СОЗДАВАЙТЕ ДЕЙСТВИЕ САМОСТОЯТЕЛЬНО.

Selvin 07.08.2018 14:29
0
2
126
1

Ответы 1

Измените эту строку:

locManager = (LocationManager) getSystemService(this.context.LOCATION_SERVICE);

для этого

locManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

Как это поможет? нет никакой разницы, если мы используем instnce.FINAL_STATIC или Class.FINAL_STATIC ... также this.getSystemService не имеет смысла, поскольку экземпляр WebAppInterface не является допустимым Context ...

Selvin 07.08.2018 15:44

Другие вопросы по теме