#java #android #maps
#java #Android #Карты
Вопрос:
У меня есть действие Google Maps в моем приложении для Android, и в нем есть AlertDialog, который вызывает настройки GPS, когда GPS отключен, но это диалоговое окно не отображается.
И затем происходит то, что я получаю активность Google Maps без маркеров, потому что диалоговое окно не просило меня активировать GPS.
private void openSettingsDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this);
builder.setTitle("Permissões requeridas");
builder.setMessage("Esta app precisa de permissões de GPS. Dê essas permissões nas definições.");
builder.setPositiveButton("Definições", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, 101);
}
});
builder.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
Именно здесь я вызываю openSettingsDialog()
private void requestMultiplePermissions() {
Dexter.withActivity(this)
.withPermissions(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION)
.withListener(new MultiplePermissionsListener() {
@Override
public void onPermissionsChecked(MultiplePermissionsReport report) {
// check if all permissions are granted
if (report.areAllPermissionsGranted()) {
Toast.makeText(getApplicationContext(), "Todas as permissões aceites!", Toast.LENGTH_SHORT).show();
}
// check for permanent denial of any permission
if (report.isAnyPermissionPermanentlyDenied()) {
// show alert dialog navigating to Settings
openSettingsDialog();
}
}
@Override
public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
token.continuePermissionRequest();
}
}).
withErrorListener(new PermissionRequestErrorListener() {
@Override
public void onError(DexterError error) {
Toast.makeText(getApplicationContext(), "Algum erro ocorreu! ", Toast.LENGTH_SHORT).show();
}
})
.onSameThread()
.check();
}
onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
//code for getting current location
requestMultiplePermissions();
tvLocation = (TextView) findViewById((R.id.tv));
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
Bundle extras = getIntent().getExtras();
if (extras != null) {
String gpslocation = extras.getString("GPSLocation");
String[] latLng = gpslocation.split(",");
double latitude = Double.parseDouble(latLng[0]);
double longitude = Double.parseDouble(latLng[1]);
LatLocation = new LatLng(latitude, longitude);
}
}
Комментарии:
1. В этом фрагменте кода нет ничего плохого, поэтому я думаю, что есть проблема с местом, где вы вызываете этот код, не могли бы вы, пожалуйста, сказать мне, где вы вызываете эту функцию? возможно, обновите свой вопрос и свяжите активность hole
2. Код, которым вы поделились, не содержит никакого кода, связанного с картой… Пожалуйста, отредактируйте свой вопрос со всей информацией.
3. Я добавил метод, в котором я вызываю openSettingsDialog() код всего действия был бы слишком большим, чтобы публиковать здесь.
4. @DiogoJesus ваш код работает, вы вызываете
requestMultiplePermissions()
в onCreate() ?5. @Amine Да, это так.
Ответ №1:
В openSettingDialogMethod()
удалить
builder.show();
и добавьте эту строку кода
AlertDialog alertDialog = builder.create();
alertDialog.show();
Комментарии:
1. openSettingsDialog() находится в файле класса MainActivity
2. Нет, это в MapsActivity
3. Хорошо, в этом коде нет ничего плохого. Добавьте точку останова и попробуйте отладить свой код.
Ответ №2:
Хорошо, я это исправил. По-видимому, я хотел не этот диалог, а диалоговое окно «Открыть настройки GPS», которое теперь работает в моем приложении. Извините, что я дурачок, я новичок в Android Studio.