Не удалось разрешить 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}
Зачем это делать? Как я могу это исправить?
Ответы
Ответ 1
Для первой части вы должны использовать <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
является еще одним допустимым способом решения этой проблемы.
Ответ 2
измените это значение
Manifest.permission.ACCESS_FINE_LOCATION
в этот
android.Manifest.permission.ACCESS_FINE_LOCATION
Ответ 3
Попробуйте это! Поскольку ACCESS_FINE_LOCATION доступен в следующем пакете, поэтому добавьте:
import android.Manifest;
Ответ 4
если вы работаете с динамическими разрешениями, и любое разрешение, например ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION, дающее ошибку ", не может разрешить метод PERMISSION_NAME" , в этом случае напишите код с именем разрешения, а затем перестроить проект, это будет регенерировать файл манифеста (Manifest.permission)
Ответ 5
У меня была аналогичная проблема, когда она была использована;
ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
где он не смог разрешить символ READ_CONTACTS
.
Однако при использовании;
import android.Manifest;
Он начал распознавать READ_CONTACT
Ответ 6
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);
}
Ответ 7
Попробуйте это перед запуском, убедитесь, что у вас есть разрешение на доступ.
try {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}
Ответ 8
Изменить
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
Для этого
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}
Ваша проблема будет решена.
Ответ 9
Когда вы вводите "Manifest", Android Studio предложит вам выбрать несколько вариантов Manifest. Вы должны выбрать один запускающий андроид вместо имени вашего проекта.
Если вы обращаетесь к ссылке Manifest.java, и вы можете найти только 1-2 строки в классе "Разрешения", то вы ссылаетесь на неправильный класс манифеста.
Ответ 10
Попробуйте следующее:
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;
}