Отказано в доступе не удается получить местоположение Android - PullRequest
0 голосов
/ 05 июня 2018

Я даю разрешение приложению на Android при первоначальной настройке для отслеживания геолокации и лаков мобильных устройств, идентификатора ячейки и кода страны, а также кода башни.На полпути я получаю следующую ошибку: «Отказано в доступе, невозможно получить местоположение Android», т. Е. Первоначально при установке Приложения на Android, которое изначально предоставляет геолокацию, но на полпути оно прекращает получать геолокацию.

Решения для вышеуказанногобыть очень ценным

Пожалуйста, найдите код ниже -

private void requestStoragePermission() {
    Dexter.withActivity(this)
            .withPermissions(
                    Manifest.permission.WAKE_LOCK,
                    Manifest.permission.READ_CONTACTS,
                    Manifest.permission.ACCESS_NETWORK_STATE,
                    Manifest.permission.ACCESS_WIFI_STATE,
                    Manifest.permission.READ_PHONE_STATE,
                    Manifest.permission.ACCESS_COARSE_LOCATION,
                    Manifest.permission.ACCESS_FINE_LOCATION)
            .withListener(new MultiplePermissionsListener() {
                @Override
                public void onPermissionsChecked(MultiplePermissionsReport report) {
                    // check if all permissions are granted
                    if (report.areAllPermissionsGranted()) {
                        Toast.makeText(getApplicationContext(), "All permissions are granted!", Toast.LENGTH_SHORT).show();
                    }

                    // check for permanent denial of any permission
                    if (report.isAnyPermissionPermanentlyDenied()) {
                        // show alert dialog navigating to Settings
                        showSettingsDialog();
                    }
                }

                @Override
                public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
                    token.continuePermissionRequest();
                }
            }).
            withErrorListener(new PermissionRequestErrorListener() {
                @Override
                public void onError(DexterError error) {
                    Toast.makeText(getApplicationContext(), "Error occurred! ", Toast.LENGTH_SHORT).show();
                }
            })
            .onSameThread()
            .check();
}

1 Ответ

0 голосов
/ 05 июня 2018

Получите данные о местоположении, затем необходимо разрешение во время выполнения, попробуйте ниже код.

добавить вещи в ваше приложение, если оно отсутствует, а также как обрабатывать разрешение во время выполнения.

Попробуйте убедиться, что ваше приложениеУровень Gradle файл в версии SDK компиляции последней.как

 compileSdkVersion 27

, затем после также добавьте разрешение в файл манифеста Android.

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

и после проверки разрешения времени выполнения, как показано ниже, создайте два метода.

/** 
 * this method check permission and return current state of permission need. 

 */ 
private boolean checkPermissions() { 
int permissionState = ActivityCompat.checkSelfPermission(this,
        Manifest.permission.ACCESS_FINE_LOCATION); 
return permissionState == PackageManager.PERMISSION_GRANTED;
 } 

/** 
* this method request to permission asked. 
*/ 
private void requestPermissions() { 
 boolean shouldProvideRationale =
        ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.ACCESS_FINE_LOCATION); 

if (shouldProvideRationale) {
    Log.i(TAG, "Displaying permission rationale to provide additional context.");
} else { 
    Log.i(TAG, "Requesting permission");
    // previously and checked "Never ask again". 
    ActivityCompat.requestPermissions(MainActivity.this,
            new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
            REQUEST_PERMISSIONS_REQUEST_CODE); 
  }  
 } 

  /** 
  * Callback received when a permissions request has been completed. 
  */ 
  @Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                   @NonNull int[] grantResults) {
Log.i(TAG, "onRequestPermissionResult");
if (requestCode == REQUEST_PERMISSIONS_REQUEST_CODE) {
    if (grantResults.length <= 0) {
        // If user interaction was interrupted, the permission request is cancelled and you 
        // receive empty arrays. 
        Log.i(TAG, "User interaction was cancelled.");
    } else if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        // Permission was granted. Kick off the process of building and connecting 
        // GoogleApiClient. 
        buildGoogleApiClient(); 
    } else { 
        // Permission denied. 

    } 
} 
} 

затемкогда вызываете метод определения местоположения, затем ставьте, как показано ниже, проверку в методе onCreateview

 // Check if the user revoked runtime permissions.
if (!checkPermissions()) {
    requestPermissions();
}

buildGoogleApiClient();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...