Android Использование диалогового окна службы определения местоположения Google

Я использую геозоны в своем приложении. Если пользователь впервые переключает местоположение после первого запуска устройства, его просят согласиться с местоположением Google. Но если пользователь не согласен, инициализация геозон возвращает код ошибки 1000.

Есть ли способ снова попросить использовать местоположение Google из моего приложения?

Я знаю об этом квесте, но этот диалог запускается только настройка местоположения первого запуска. И если пользователь не согласен, ИМХО нет возможности показать диалог. Или есть способ?

Спасибо за ответ


person Michael Drdlíček    schedule 21.11.2016    source источник
comment
Непонятно, что вы спрашиваете. Что помешает вам снова предложить пользователю?   -  person Daniel Nugent    schedule 22.11.2016


Ответы (1)


Как было сказано в вашем вопросе, я не уверен, ТОЧНО, о чем вы спрашиваете, но вы можете проверить, не согласился ли пользователь с разрешениями на определение местоположения, используя shouldShowRequestPermissionRationale.

Ниже приведен расширенный код, основанный на Запрос разрешений. документацию, которую я использую и которая может оказаться полезной для вас.

    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

        Log.d(TAG, "checkMyPermissions ( " + permissionRequestCode + ") : Permissions FAILED");
        // Should we show an explanation?

        if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) {
            // Show an explanation to the user *asynchronously* -- don't block
            // this thread waiting for the user's response! After the user
            // sees the explanation, try again to request the permission.
            new AlertDialog.Builder(this)
                    .setMessage("In order to show data this app requires location permissions")
                    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            ActivityCompat.requestPermissions(MainActivity.this,
                                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                                    permissionRequestCode);
                        }
                    })
                    .setNegativeButton(android.R.string.cancel, null)
                    .show();

        } else {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    permissionRequestCode);
        }
        return false;
    } else {
        Log.d(TAG, "checkMyPermissions ( " + permissionRequestCode + ") : Permissions Passed");
        return true;
    }
person SimonH    schedule 28.11.2016
comment
Он спрашивает о диалоговом окне службы определения местоположения Google (i.stack.imgur.com/ccg4k.png), а не о запросе пользовательского разрешения. - person algarrobo; 20.11.2017