2012-11-28 8 views
19

chcę dodać to uprawnienie do mojego Android manifeście:Zezwala się wyłącznie do aplikacji systemu, w jawnym

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> 

Ale po wklej ten gość w moim manifeście, że testuje czerwone podkreślenia i mówi:

zgoda jest udzielana tylko do aplikacji systemowych

Co mogę zrobić?

+0

wezwanie Co API używasz że wymaga to pozwolenie? –

+0

@ A - C Próbuję tego samouczka. http://androidsourcecode.blogspot.in/2010/10/blocking-incoming-call-android.html –

+0

Widzę, dlaczego ta aplikacja potrzebuje pozwolenia. Spójrz na komentarze, chociaż inni ludzie mieli ten problem, przynajmniej na piernika. –

Odpowiedz

59

MODIFY_PHONE_STATE udziela się tylko aplikacje systemowe.

dla twojej informacji, istnieją 2 rodzaje aplikacji na Androida: system & użytkownik

aplikacje użytkownika są tylko wszystkie normalne instalacji aplikacji za pośrednictwem sklepu Google Play, Amazon Appstore lub sideloading. Przechodzą one na partycję/data telefonu z systemem Android, która jest częścią pamięci wewnętrznej udostępnianej dla danych użytkownika i aplikacji.

Aplikacje systemowe to w zasadzie aplikacje, które są fabrycznie zainstalowane z ROMem. W standardowym środowisku użytkownika systemu Android użytkownik nie ma uprawnień do zapisu na partycji/system, dlatego bezpośrednie instalowanie lub odinstalowywanie aplikacji systemowych nie jest możliwe.

Aby zainstalować aplikację jako aplikacja systemowa na urządzenia z systemem Android, urządzenie musi być albo zakorzenione lub mieć odzysk niestandardowy zainstalowany (lub oba).

To powiedziawszy, ten błąd jest nieprawidłowy, ponieważ masz ważny kod i kompilacja powinna działać. Byłoby lepiej, gdyby zamiast tego ostrzeżono. W Eclipse możesz łatwo to naprawić. Po prostu przejdź do:

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

Znajdź ProtectedPermission z listy i ustaw nasilenie się do czegoś innego niż błąd (info na przykład). W ten sposób Twój projekt będzie się nadal kompilować.

+0

Działa .. Dziękuję bardzo, aby zapisać moje godziny – Shalini

6

MODIFY_PHONE_STATE jest uprawnieniem tylko do systemu. Aplikacje systemowe są wstępnie zainstalowane w folderze systemowym lub skompilowane przez producenta przy użyciu certyfikatu bezpieczeństwa.

Dlatego jeśli próbujesz to zrobić, próbujesz użyć interfejsu API, który nie jest już obsługiwany. W systemie Android w wersji 2.3+ możesz monitorować połączenia przychodzące, ale blokowanie jest niedozwolone (myślę, że z linku, który opublikowałeś, jest tym, co próbujesz zrobić).

kwestie Android jeśli trzeba wykonać: Issue 15022 i Issue 14789

+0

Tak, próbowałem blokować połączenia przychodzące, więc ten problem jest naprawdę do dupy. –

+0

Więc, jak są niektóre aplikacje w sklepie Play, które mogą blokować połączenia? –

+0

Nie blokują połączeń. Mówią, że tak, ale wszystko, co mogą zrobić, to powiadomić użytkownika (gdy zablokowany numer wywoła), ale nie może go całkowicie zablokować. Wszystko to oczywiście w wersjach Androida 2.3+. – Nerd

4

Ten błąd pojawia się w pakiecie SDK 19, po zmianie manifestu. Czy projekt jest czysty i zbudowany. To powinno wyczyścić ten błąd.

+1

to powinien być komentarz, a nie odpowiedź –

2

tylko oczyścić swój projekt będzie dobrze tak:

projektu> Clean ...

+0

nie pomogłoby to w tym przypadku. –

2

Ponieważ jest to poziom systemu deweloper urządzenie uprawnienie nie przyznają to więc narzędzia do tworzenia aplikacji również ostrzec przed tym tak trzeba po prostu kliknij na projekt i czyszczenia tego projektu

0

Znajdź ProtectedPermission z listy w

Window -> Preferences -> Android -> Lint Error Checking. 

i ustawić istotność na coś innego niż błąd (na przykład informacja). W ten sposób Twój projekt będzie się nadal kompilować.

0

Istnieją cztery rodzaje pozwolenia

Regular 
Dangerous 
Signed 
Signed or System 

The first two can be used by Simple Apps Pozostałe dwie mogą być używane tylko przez aplikację, która ma zbudować w ramowych

Powiązane problemy