2015-02-02 16 views
5

Pisałem jakiś kod testowy, aby zweryfikować typ i zakres uprawnień, które są wymagane przez nasze aplikacje, i zauważyłem, że dwa nowe poziomy ochrony zostały ostatnio dodane do Androida.Do czego służą flagi ochronne "appop" i "development"?

Według official Android docs element w AndroidManifest.xml <permission> przyjmuje jedną z czterech wartości:

ANDROID ProtectionLevel = [ "normalne" | "niebezpieczne" "podpis" | „SignatureOrSystem”]

ale zauważyłem, że klasa PermissionInfo (patrz here) ma flagi w sumie sześć poziomów ochrony. Wydaje się, że te dwa poziomy zostały dodane w SDK 16 i 21, odpowiednio, ale nie wydają się być udokumentowane:

int PROTECTION_FLAG_DEVELOPMENT = 0x20 
int PROTECTION_FLAG_APPOP  = 0x40 

Zastanawiałem się, co różnica między tymi poziomami ochrony i te, które mogą być zdefiniowane w manifeście i czy/kiedy powinny one zostać użyte.

Odpowiedz

4

Pozwolenie appop jest tylko wspomnieniem App Ops narzędzie Google wprowadzony z powrotem w Androidzie 4.3 i została usunięta odkąd . Teoretycznie uprawnienia użytkownika z flagą appop mogą być przełączane przez użytkownika podczas testowania, aby sprawdzić, jak aplikacja zachowa się, gdy pewne oprogramowanie lub funkcje sprzętowe będą włączone lub wyłączone.

To jest rzeczywisty opis Ops App podanych przez inżynierów Google:

Na przykład, jest ona wykorzystywana obecnie do sterowania jednej aplikacji powiadomień do śledzenia gdy lokalizacja był dostępny w nowej lokalizacji UI dla niektórych aspektów nowej prąd SMS aplikacji sterowania itp

Oto link do pełnego postu: https://plus.google.com/+DannyHolyoake/posts/FkfBxA5i3iG

3

development flaga (0x20)

dodatkowe Flaga z rodzaju zezwolenia bazowa: to uprawnienie może (opcjonalnie) być przyznany rozwoju aplikacji.

A appop flag (0x40):

dodatkowe flagi od rodzaju zezwolenia podstawa: to uprawnienie jest ściśle powiązany z app op kontroli dostępu.

Oto referencyjny: http://developer.android.com/reference/android/R.attr.html

Pozwolenie development, lub coś podobnego, jest zwykle stosowany w sytuacjach, gdzie wymagane są pewne uprawnienia dla celów rozwoju/debugowania, ale nie w celach uwalnianiu. Na przykład załóżmy, że tworzysz nową aplikację. Najpierw wdrażasz wersję aplikacji kandydata do wydania do wybranej grupy osób/testerów. Możesz użyć poziomu uprawnień development, aby włączyć funkcje, które mogą być przydatne do wstępnego testowania i zbierania wyników, takich jak GPS, aby zobaczyć lokalizację grupy testowej i możliwości przechowywania/sieci do przechowywania i wysyłania dzienników do analizy. Po przygotowaniu się do wydania ogólnego, usuwasz to uprawnienie, ponieważ zbieranie takich danych nie jest już potrzebne lub, co bardziej prawdopodobne, niemożliwe dla większej grupy osób (np. Kwestie prywatności itp.).

Jeśli chodzi o pozwolenie appop idzie, nie jestem pewny ...

+0

Dzięki Willis! Masz pojęcie o tym, co rozumieją w "aplikacjach programistycznych" lub "op aplikacji do kontrolowania dostępu"? –

+0

Dodano trochę informacji ... – Willis

1

GRANT_RUNTIME_PERMISSIONS przyznawana jest zapłacić aplikację. Pozwala użytkownikowi powłoki na udzielanie uprawnień programistycznych podczas wykonywania. Odbywa się to za pomocą komend pm grant i .

Możesz sprawdzić, frameworks/base/core/res/AndroidManifest.xml, aby zobaczyć, które uprawnienia, które zwykle są przyznawane tylko do podpisu lub aplikacji systemowych, mogą być przyznane zwykłym aplikacjom przez powłokę.

Powiązane problemy