Диалоговое окно LocationSettingsRequest для включения GPS

За последние несколько дней я ищу решение, но не могу его найти. Я работаю над ситуацией, когда точность определения местоположения Google отключена для Android 9+, тогда приложение должно предложить пользователю включить точность определения местоположения.

Столкнувшаяся проблема:

Возможно ли, если (statusCode == LocationSettingsStatusCodes.RESOLUTION_REQUIRED), а затем перейти непосредственно к экрану точности определения местоположения Google устройства (что выглядит сложно). ИЛИ настроить диалоговое окно, которое запрашивается библиотекой сервисов Google (что, как я полагаю, невозможно). Любые мысли будут оценены.

Ниже приведен фрагмент.

mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(UPDATE_INTERVAL);
    mLocationRequest.setFastestInterval(UPDATE_INTERVAL);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
    builder.addLocationRequest(mLocationRequest);
mLocationSettingsRequest = builder.build();     mSettingsClient.checkLocationSettings(mLocationSettingsRequest).addOnSuccessListener(mActivity,
        new OnSuccessListener<LocationSettingsResponse>() {
    @Override
    public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
        mFusedProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()).addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {


            }
        });
    }
}).addOnFailureListener(mActivity, new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        int statusCode = ((ApiException) e).getStatusCode();
        if(statusCode == LocationSettingsStatusCodes.RESOLUTION_REQUIRED){
            //Location settings not satisfied.
            try {

                ResolvableApiException resolvable = (ResolvableApiException) e;
                resolvable.startResolutionForResult(
                        mActivity,
                        LOCATION_REQUEST);
            } catch (IntentSender.SendIntentException ex) {
    
            }
        } else {

        }

    }
});
 

person user5458949    schedule 04.02.2021    source источник


Ответы (1)


Попробуйте это, работает для меня

private void showLocationDialog() {
    new AlertDialog.Builder(RequestLocationUpdatesWithIntentActivity.this).setTitle("The location service is not enabled on the phone.")
            .setMessage("Go to Settings > Location information (enable location service).")
            .setNegativeButton("cancels", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                }
            })
            .setPositiveButton("Unset", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Intent intent = new Intent();
                    intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    try {
                        RequestLocationUpdatesWithIntentActivity.this.startActivity(intent);
                    } catch (ActivityNotFoundException ex) {
                        intent.setAction(Settings.ACTION_SETTINGS);
                        try {
                            RequestLocationUpdatesWithIntentActivity.this.startActivity(intent);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            })
            .show();
}

Вы можете позвонить сюда. введите здесь описание изображения

И тут такой эффект.

введите здесь описание изображения

person shirley    schedule 08.02.2021
comment
Большое спасибо. ты лучший :) - person user5458949; 08.02.2021
comment
привет, это полезно? Пожалуйста, примите этот ответ, если он был вам полезен. Спасибо :) - person shirley; 08.02.2021