Не удается разрешить Манифест.разрешение.ДОСТУП К ПРЕКРАСНОМУ МЕСТОПОЛОЖЕНИЮ
при добавлении разрешений в мой файл манифеста, ниже xml работает.
<permission android:name="android.permission.ACCESS_FINE_LOCATION" />
однако этот xml не работает.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
какой из них я должен использовать? Если это первый, почему бы ему не работать? Как я могу это исправить?
кроме того, я получаю Android 6.0 runtime permissions related exception:
java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.
когда я пытаюсь добавить разрешение в массив строк, чтобы проверить разрешение, Android Studio говорит мне, что он не может решите Manifest.permission
в приведенном ниже коде:
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
зачем ему это делать? Как я могу это исправить?
12 ответов:
для первой части, вы должны использовать
<uses-permission>
согласно сайту Android Devlopers. Попробуйте убедиться, что вы объявляете свои разрешения напрямую под<manifest>
тег, а не в<application>
- тег. Трудно понять, в чем ваша проблема, не видя всего файла манифеста. Проверьте ссылку, которую я разместил выше для получения дополнительной информации о том, как назначить разрешения в манифесте.в отношении ваших разрешений во время выполнения проблема:
С использованием-разрешения не могут решить эту проблему..
новая строка[]{Манифест.разрешение.Функция}
почему?
убедитесь, что вы используете
android.Manifest
вместоmy.app.package.Manifest
. Много раз Android Studio будет по умолчанию для последнего вместо первого.Итак, ваша новая строка кода будет выглядеть так:
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION};
Edit: я переформатировал свой ответ.
Edit 2: Be остерегайтесь импорта
android.Manifest
. Это можете вызывает проблемы, если вы также импортируетеmy.app.package.Manifest
. Кроме этогоimport android.Manifest
является еще одним допустимым способом решения этой проблемы.
изменить это
Manifest.permission.ACCESS_FINE_LOCATION
в этой
android.Manifest.permission.ACCESS_FINE_LOCATION
попробуйте это! Поскольку ACCESS_FINE_LOCATION доступен в следующем пакете, поэтому добавьте:
import android.Manifest;
у меня была аналогичная проблема, где используется;
ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
, где он не может разрешить символ
READ_CONTACTS
.однако при использовании;
import android.Manifest;
Он начал признать
READ_CONTACT
Если вы работаете над динамическими разрешениями и любыми разрешениями, такими как ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION дает ошибку "не удается разрешить метод PERMISSION_NAME" в этом случае напишите вам код с именем разрешения, а затем перестроить проект это восстановить манифест(Манифест.разрешение) файл
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 }
изменить
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
этой
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}
ваша проблема будет решена.
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
изменить на
android.manifest.permission.ACCESS_FINE_LOCATION
Если у вас есть уже использует.разрешения правильно настроить в файле манифеста, как уже упоминалось hnilsen, просто замените строку:
Manifest.permission.ACCESS_FINE_LOCATION
на этот:
android.Manifest.permission.ACCESS_FINE_LOCATION
Это может решить вашу проблему.
попробуйте это:
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 должна предложить вам выбрать несколько вариантов Манифеста. Вы должны выбрать один запуск android вместо имени вашего проекта.
Если вы получаете доступ к ссылке Манифеста.java, и вы можете найти, что есть только 1-2 строки в классе "разрешение", тогда вы ссылаетесь на неправильный класс манифеста.