Как получить GPS-координаты с разрешением времени выполнения для Android 6.0 Marshmallow?

Я попытался настроить разрешение GPS для приложения andriod, используя приведенный ниже код в manifest.xml.

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

Но когда я выполняю, я не могу получить координаты GPS. Я получаю всплывающее сообщение «нужно разрешение». Нужна помощь. Вот мой фрагмент кода.

LocationManager locationManager = (LocationManager)
                getSystemService(Context.LOCATION_SERVICE);
        LocationListener locationListener = new MyLocationListener();
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            Toast toast = Toast.makeText(getApplicationContext(), "no permission", Toast.LENGTH_LONG);
            toast.show();
            return;
        }
        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 5000, 10, locationListener);

person Dinesh Babu J    schedule 12.10.2016    source источник
comment
developer.android.com/training/permissions/requesting.html   -  person CommonsWare    schedule 12.10.2016
comment
пожалуйста, посмотрите на этот ответ, я добавил разрешение на местоположение stackoverflow.com/questions/35973235/   -  person Saveen    schedule 12.10.2016


Ответы (1)


Добавьте эту строку внутри вашего if block

ActivityCompat.requestPermissions(context, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1); // 1 is a integer which will return the result in onRequestPermissionsResult

И прикрепите этот код в своей деятельности,

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {

    switch (requestCode) {
        case 1:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this,"GPS permission granted",Toast.LENGTH_LONG).show();

            //  get Location from your device by some method or code

            } else {
            // show user that permission was denied. inactive the location based feature or force user to close the app
            }
            break;
    }
}
person Sudip Podder    schedule 12.10.2016