Uprawnienie jest przyznawane tylko aplikacji systemowej

98

Mam aplikację systemową, która używa uprawnień systemowych i mam te uprawnienia wymienione w manifeście. Eclipse wyświetla następujący błąd, gdy próbuję utworzyć kompilację (działa kompilacja z wiersza poleceń):

Uprawnienie jest przyznawane tylko aplikacjom systemowym

Wiem już, że moja aplikacja wymaga uprawnień systemowych i nie stanowi to dla mnie problemu, ponieważ moja aplikacja będzie używana tylko na zrootowanych telefonach. Więc chcę stłumić ten błąd, ktoś wie jak?

EDYTUJ
Mój projekt już dobrze kompiluje się w wierszu poleceń, instaluje się, uruchamia itd. Mój problem polega na tym, że zaćmienie wyświetla błąd dla prawidłowego pliku manifestu.

Caner
źródło
2
Czy sprawdziłeś ten stackoverflow.com/q/9494965/603744
Andro Selva,
@AndroSelva to nie jest powiązane, mój projekt już dobrze kompiluje się w wierszu poleceń, instaluje, uruchamia itp. Mój problem polega na tym, że zaćmienie wyświetla błąd dla prawidłowego pliku manifestu. IMO powinno to tylko generować ostrzeżenie w tym przypadku.
Caner

Odpowiedzi:

205

W Eclipse:

Okno -> Preferencje -> Android -> Sprawdzanie błędów kłaczków.

Na liście znajdź wpis z ID = ProtectedPermission. Ustaw wartość istotności na mniejszą niż błąd. W ten sposób nadal możesz skompilować projekt za pomocą Eclipse.

W Android Studio:

Plik -> Ustawienia -> Edytor -> Inspekcje

Pod Android Lint, zlokalizuj Using system app permission. Usuń zaznaczenie pola wyboru lub wybierz poziom ważności niższy niż błąd.

Ole
źródło
1
Dzięki! W Android Studio 1.2 znalazłem to w Plik -> Ustawienia -> Edytor -> Inspekcje.
Aaron
Chcę programowo zmienić jasność ekranu. Edytowałem Lint w ustawieniach. Ale rzuca wyjątek bezpieczeństwa podczas próby programowej zmiany jasności ekranu. Każdy ma jakieś rozwiązanie do zaimplementowania tej funkcji w systemie Android 3.1 powyżej Marshmallow, udostępnij.
Nithinjith
3
W Android Studio 2.1 przejdź do Plik -> Ustawienia -> Edytor -> Inspekcje, a następnie rozwiń Android> Lint> Poprawność. Wybierz „Używanie uprawnień aplikacji systemowej”, zmień ważność lub odznacz pole wyboru.
Ezekiel Baniaga
2
To było Android > Lint > Correctnessdla mnie pod.
Beyondo
75

Aby zignorować ten błąd tylko dla jednej instancji, dodaj tools:ignore="ProtectedPermissions"atrybut do deklaracji uprawnień. Oto przykład:

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

Musisz dodać toolsprzestrzeń nazw w głównym elemencie manifestu

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
Jesta
źródło
3
To jest właściwa odpowiedź. Po co wyłączać całą inspekcję, gdy jest ona tylko częściowo potrzebna. Dziękuję Panu!
Yoraco Gonzales
Trzeba dodać przestrzeń nazw ... xmlns: Narzędzia = „ schemas.android.com/tools
purplecabbage
13

Od czasu do czasu mam ten sam błąd (kiedy ustawiam lokalizację instalacji na „preferuj zewnętrzną” w manifeście). Po prostu wyczyść i przebuduj projekt. Pracuje dla mnie.

Amalia
źródło
3

kiedy twoje zezwolenie na dodawanie w manifeście, potem w eclipse, przejdź do projektu i clic

  1. kliknij projekt
  2. kliknij czysty projekt to wszystko

k na czysty projekt

Adiii
źródło
2
tools:ignore="ProtectedPermissions"

Spróbuj dodać ten atrybut do tego uprawnienia.

user10206860
źródło
1

Preferencje -> EditorEditor -> Inspekcje -> Android Lint -> odznacz pozycję Korzystanie z aplikacji systemowej permissio

Văn Vũ
źródło
1

Ścieżka w Android Studio na komputerze Mac:

Android Studio -> Preferencje -> Edytor -> Inspekcje

Rozwiń Android -> Rozwiń Lint -> Rozwiń poprawność

Usuń zaznaczenie pola wyboru Korzystanie z uprawnień aplikacji systemowej

Kliknij „ZASTOSUJ” -> „OK”

Karishma Chaudhary
źródło