Мне нужно, чтобы получить местоположение пользователя с помощью диспетчера местоположения. Я успешно использую намерение для запуска 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) {
}
};
}
Местоположение включено, но не получено, когда я включаю разрешение на уровне приложения, оно работает. Как пользователи могут делать оба одновременно
Я предполагаю, что вы запрашиваете LOCATION_PERMISSION только в манифесте, а не во время выполнения.
После Android 6.0 (уровень API 23), вы должны спросить разрешения во время выполнения.
Приведенный выше код запрашивает разрешение на READ_CONTACTS. Сделайте некоторые изменения в приведенном выше коде и добавьте его в свой проект, он должен работать. Просмотрите эту документацию.