Местоположение включено, но слушатель ничего не возвращает

1

Мне нужно, чтобы получить местоположение пользователя с помощью диспетчера местоположения. Я успешно использую намерение для запуска Settings.ACTION_LOCATION_SOURCE_SETTINGS. Я включаю местоположение, но все еще не могу получить местоположение.

Когда я проверил настройки телефона и включил разрешения на уровне приложения, мое приложение работало нормально. Но я не хочу, чтобы пользователи делали это вручную, как они могут один раз включить местоположения и также включить разрешение на уровне приложения для приложения

if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ||

!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
        LocationRequest request = new LocationRequest();
        request.setInterval(0);
        // Build the alert dialog
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Location Services Not Active");
        builder.setMessage("Please enable Location Services and GPS");
        builder.setPositiveButton("OK", new 
DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogInterface, int i) {
                // Show location settings when the user acknowledges the 
alert dialog
                Intent intent = new 
Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                startActivity(intent);
            }
        });
        builder.setNegativeButton("Cancel", new 
DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(EmployeeDashBoard.this,"You must turn on 
Location",Toast.LENGTH_LONG).show();
                startActivity(new Intent(EmployeeDashBoard.this, 
LoginScreen.class));
            }
        });
        Dialog alertDialog = builder.create();
        alertDialog.setCanceledOnTouchOutside(false);
        alertDialog.show();
    }else{
        //listener that responds to location updates
        locationListener = new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                updateEmployeeLocation(location);
            }

            @Override
            public void onStatusChanged(String provider, int status, 
Bundle extras) {
            }

            @Override
            public void onProviderEnabled(String provider) {

            }

            @Override
            public void onProviderDisabled(String provider) {

            }
        };

    }

Местоположение Изображение 174551 включено, но не получено, когда я включаю разрешение на уровне приложения, оно работает. Как пользователи могут делать оба одновременно

Изображение 174551

Теги:
arrays
location

1 ответ

0

Я предполагаю, что вы запрашиваете LOCATION_PERMISSION только в манифесте, а не во время выполнения.

После Android 6.0 (уровень API 23), вы должны спросить разрешения во время выполнения.

Приведенный выше код запрашивает разрешение на READ_CONTACTS. Сделайте некоторые изменения в приведенном выше коде и добавьте его в свой проект, он должен работать. Просмотрите эту документацию.

  • 1
    Спасибо, это работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню