Подтвердить что ты не робот

Не удалось разрешить 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}

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

4b9b3361

Ответ 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;
    }