Не удается разрешить Manifest.permission.ACCESS_FINE_LOCATION

При добавлении разрешений в файл манифеста работает ниже xml.

<permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Однако этот xml не работает.

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

Какой из них я должен использовать? Если это первый, почему бы не работать? Как я могу это исправить?

Кроме того, я получаю исключение, связанное с разрешениями среды выполнения для Android 6.0:

 java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission. 

Когда я пытаюсь добавить разрешение на массив String, чтобы проверить разрешение, Android Studio говорит мне, что он не может разрешить Manifest.permission в приведенном ниже коде:

 new String[]{Manifest.permission.ACCESS_FINE_LOCATION} 

Зачем это делать? Как я могу это исправить?

Solutions Collecting From Web of "Не удается разрешить Manifest.permission.ACCESS_FINE_LOCATION"

Для первой части вы должны использовать <uses-permission> соответствии с сайтом Android Devlopers . Попытайтесь указать свои права доступа непосредственно в <manifest> , а не в <application> . Трудно понять, какова ваша проблема, не видя весь ваш файл манифеста. Ознакомьтесь с приведенной выше ссылкой для получения дополнительной информации о том, как объявлять разрешения в манифесте.

Что касается проблемы с разрешениями во время выполнения:

С разрешениями использования Не удается разрешить это.

New String [] {Manifest.permission.ACCESS_FINE_LOCATION}

Зачем?

Убедитесь, что вы используете android.Manifest вместо my.app.package.Manifest . Много раз Android Studio по умолчанию заменяет последнюю, а не прежнюю.

Итак, ваша новая строка кода будет выглядеть так:

 new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}; 

Изменить: я отформатировал свой ответ.

Изменить 2: Будьте осторожны с импортом android.Manifest . Это может вызвать проблемы, если вы также импортируете my.app.package.Manifest . Помимо этого import android.Manifest является еще одним допустимым способом решения этой проблемы.

Измените это

Manifest.permission.ACCESS_FINE_LOCATION

В этот

android.Manifest.permission.ACCESS_FINE_LOCATION

Попробуй это! Поскольку ACCESS_FINE_LOCATION доступен в следующем пакете, поэтому Add:

 import android.Manifest; 

Если вы работаете с динамическими разрешениями и любыми разрешениями, такими как ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION, давая ошибку «не может разрешить метод PERMISSION_NAME», в этом случае напишите код с именем разрешения, а затем перестройте свой проект, это восстановит файл манифеста (Manifest.permission)

  if (Build.VERSION.SDK_INT >= 23) { if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mapView.setMyLocationEnabled(true); } } else { mapView.setMyLocationEnabled(true); } 

Попробуйте это перед запуском, убедитесь, что у вас есть разрешение на доступ.

 try { location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); } catch (SecurityException e) { dialogGPS(this.getContext()); // lets the user know there is a problem with the gps } 

Попробуй это:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_SELECT_PICTURE); return; } 

Когда вы вводите «Манифест», Android Studio предложит вам выбрать несколько вариантов Manifest. Вы должны выбрать один запускающий андроид вместо названия вашего проекта.

Если вы обратитесь к ссылке Manifest.java, и вы можете найти только 1-2 строки в классе «Permission», то вы ссылаетесь на неправильный класс манифеста.