Разрешение предоставляется только системному приложению


99

У меня есть системное приложение, которое использует системные разрешения, и эти разрешения перечислены в манифесте. Eclipse выдает следующую ошибку, когда я пытаюсь создать сборку (сборка из командной строки работает):

Разрешение предоставляется только системным приложениям

Я уже знаю, что моему приложению требуются системные разрешения, и для меня это не проблема, потому что мое приложение будет использоваться только на телефонах с root-доступом. Итак, я хочу подавить эту ошибку, кто-нибудь знает, как?

ИЗМЕНИТЬ
Мой проект уже отлично компилируется в командной строке, устанавливается, запускается и т. Д. Моя проблема заключается в том, что eclipse выдает ошибку для легального файла манифеста.


2
Вы проверили этот stackoverflow.com/q/9494965/603744
Андро Сельва

@AndroSelva это не связано, мой проект уже отлично компилируется в командной строке, устанавливается, запускается и т. Д. Моя проблема заключается в том, что eclipse выдает ошибку для законного файла манифеста. ИМО он должен только выдавать предупреждение в этом случае.
Caner

Ответы:


206

В Eclipse:

Окно -> Настройки -> Android -> Проверка ошибок Lint.

В списке найдите запись с ID = ProtectedPermission. Установите уровень серьезности ниже, чем ошибка. Таким образом, вы все еще можете скомпилировать проект с помощью Eclipse.

В Android Studio:

Файл -> Настройки -> Редактор -> Инспекции

Под Android Lint, найдите Using system app permission. Снимите флажок или выберите серьезность ниже ошибки.


1
Спасибо! В Android Studio 1.2 я нашел это в меню «Файл» -> «Настройки» -> « Редактор» -> «Проверки».
Аарон

Хочу программно изменить яркость экрана. Я редактировал Lint в настройках. Но он выдает какое-то исключение безопасности при попытке программно изменить яркость экрана. У кого-нибудь есть решение для реализации этой функции в Android 3.1 выше Marshmallow, поделитесь.
Nithinjith

3
В Android Studio 2.1 перейдите в Файл -> Настройки -> Редактор -> Проверки, затем разверните Android> Линт> Корректность. Выберите «Использование разрешения системного приложения», измените серьезность или снимите флажок.
Иезекииль Баниага

2
Это было не Android > Lint > Correctnessдля меня.
Beyondo 05

76

Чтобы игнорировать эту ошибку только для одного экземпляра, добавьте tools:ignore="ProtectedPermissions"атрибут в объявление разрешения. Вот пример:

<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
    tools:ignore="ProtectedPermissions" />

Вы должны добавить toolsпространство имен в корневой элемент манифеста

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

3
Это правильный ответ. Зачем отключать всю проверку, когда она нужна только частично. Спасибо, сэр!
Йорако Гонсалес,

Вам нужно будет добавить пространство имен ... xmlns: tools = " schemas.android.com/tools "
purplecabbage

13

Время от времени возникает такая же ошибка (когда я устанавливаю для места установки значение «предпочитать внешнее» в манифесте). Просто очистите и перестройте проект. Работает для меня.


3

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

  1. нажмите на проект
  2. нажмите на чистый проект и все

k на чистый проект


2
tools:ignore="ProtectedPermissions"

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


1

Настройки -> Редактор Редактор -> Инспекции -> Android Lint -> снимите отметку с пункта Использование разрешения системного приложения


1

Путь в Android Studio на Mac:

Android Studio -> Настройки -> Редактор -> Инспекции

Разверните Android -> Разверните Lint -> Разверните правильность

Снимите флажок " Использование разрешения системного приложения".

Нажмите «ПРИМЕНИТЬ» -> «ОК».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.