Prośby o uprawnienia chronią informacje poufne dostępne na urządzeniu oraz powinny być używane tylko wtedy, gdy dostęp do informacji jest niezbędny działania aplikacji. Ten dokument zawiera wskazówki na temat tego, takie same (lub lepsze) funkcje bez konieczności dostępu. do takich informacji; nie jest to wyczerpująca dyskusja na temat tego, i działają w systemie operacyjnym Android.
Bardziej ogólne informacje o uprawnieniach Androida znajdziesz w artykule Omówienie uprawnień. Szczegółowe informacje na temat pracy z uprawnieniami w kodzie: Więcej informacji: Prośba o przyznanie uprawnień aplikacji.
Uprawnienia w Androidzie 6.0 i nowszych
W Androidzie 6.0 (poziom interfejsu API 23) i nowszych aplikacje mogą prosić o uprawnienia w czasie działania, a nie przed instalacją. Dzięki temu aplikacje mogą: prosi o uprawnienia, gdy aplikacja rzeczywiście wymaga usług lub danych i chronione przez usługi. Nie zmienia to (niepotrzebnie) całej aplikacji powoduje też pewne zmiany w sposobie jest obsługiwany:
Większy kontekst sytuacyjny
W kontekście aplikacji użytkownicy są proszeni o przyznanie uprawnień na dostęp do funkcji objętych tymi grupami uprawnień. Użytkownicy są bardziej niezależnie od kontekstu, w którym zażądano uprawnień, oraz czy występuje niezgodność między żądaniami a przeznaczeniem aplikacji, tym ważniejsze jest, aby przedstawić użytkownikowi szczegółowe wyjaśnienie. proszą o zgodę. Gdy tylko jest to możliwe, należy uzasadnienie Twojej prośby zarówno w momencie jej przesyłania, jak i w kolejne okno, jeśli użytkownik odrzuci prośbę.
Aby zwiększyć prawdopodobieństwo zaakceptowania prośby o uprawnienia, wyświetlaj ją tylko wtedy, gdy jest wymagana konkretna funkcja. Na przykład pytaj tylko o mikrofon dostęp po kliknięciu przez użytkownika przycisku mikrofonu. Użytkownicy z większym prawdopodobieństwem pozwalają na uzyskanie oczekiwanych uprawnień.
Większa elastyczność w przyznawaniu uprawnień
Użytkownicy mogą odmówić dostępu do poszczególnych uprawnień w momencie ich żądania oraz w ustawieniach, ale mogą być zaskoczeni, gdy funkcja przestanie działać. Dobrym pomysłem jest monitorowanie, ilu użytkowników odrzuca uprawnień (np. przy użyciu Google Analytics), dzięki czemu możesz których należy unikać w zależności od tych uprawnień lub zapewniać lepsze wyjaśnienie, dlaczego aplikacja potrzebuje tych uprawnień, aby działała prawidłowo. Ty należy się też upewnić, że aplikacja obsługuje wyjątki, odrzuć prośby o uprawnienia lub wyłącz uprawnienia w ustawieniach.
Zwiększone obciążenie transakcyjne
Użytkownicy są proszeni o przyznanie dostępu poszczególnym grupom uprawnień, a nie grupom. Ten dlatego niezwykle ważne jest zminimalizowanie liczby uprawnień. z prośbą o zgodę na wykorzystanie danych. Zwiększa to obciążenie użytkownika koniecznością udzielenia uprawnień, a w konsekwencji zwiększa prawdopodobieństwo odrzucenia co najmniej jednego żądania.
Uprawnienia wymagające stania się domyślnym modułem obsługi
Niektóre aplikacje zależą od dostępu do poufnych danych użytkownika związanych z rejestrami połączeń i SMS-y. Jeśli chcesz poprosić o uprawnienia dotyczące rejestru połączeń i SMS-ów oraz opublikować aplikację w Google Play, musisz poprosić użytkownika o ustawienie Twojej aplikacji jako domyślnego modułu obsługi głównej funkcji systemu, zanim poprosisz o uprawnienia w czasie działania.
Więcej informacji o domyślnych modułach obsługi, w tym wskazówki na temat wyświetlania domyślny moduł obsługi, zapoznaj się z przewodnikiem po uprawnieniach używanych tylko w z domyślnymi modułami obsługi.
Informacje o bibliotekach, z którymi pracujesz
Czasami biblioteki używane w aplikacji wymagają uprawnień. Dla:
biblioteki reklam i analityki mogą wymagać dostępu do
LOCATION
grupa uprawnień, która pozwala wdrożyć wymagane
funkcji. Z punktu widzenia użytkownika prośba o zgodę jest jednak
z aplikacji, a nie z biblioteki.
Tak samo jak użytkownicy wybierają aplikacje, które korzystają z mniejszych uprawnień
programiści powinni przejrzeć swoje biblioteki i wybrać
zewnętrzne pakiety SDK, które nie używają niepotrzebnych uprawnień. Na przykład, jeśli
używasz biblioteki, która udostępnia funkcję lokalizacji,
nie żądają uprawnień FINE_LOCATION
, chyba że
za pomocą funkcji kierowania na podstawie lokalizacji.
Ograniczanie dostępu w tle do lokalizacji
Gdy aplikacja działa w tle, dostęp do lokalizacja powinna być kluczowa dla działania aplikacji, i przedstawiają wyraźną korzyść dla użytkowników.
Testowanie obu modeli uprawnień
Na Androidzie 6.0 (poziom interfejsu API 23) i nowszych wersjach użytkownicy mogą przyznawać i unieważniać aplikacje. uprawnień w czasie ich działania, a nie podczas instalowania aplikacji. Jako musisz przetestować aplikację w szerszych warunkach. Poprzedni na Androida 6.0, można przyjąć, że jeśli aplikacja działa ma wszystkie uprawnienia deklarowane w manifeście aplikacji. Użytkownik może włączać i wyłączać uprawnienia dla dowolnej aplikacji, niezależnie od poziomu interfejsu API. Warto przetestować, czy aplikacja działa poprawnie na różnych scenariuszy dotyczących uprawnień.
Te wskazówki pomogą Ci znaleźć problemy z kodem związane z uprawnieniami na urządzeniach z interfejsem API na poziomie 23 lub wyższym:
- Zidentyfikuj aktualne uprawnienia aplikacji i powiązane ścieżki kodu.
- Testowanie przepływów użytkowników między usługami i danymi chronionymi uprawnieniami.
- Testuj różne kombinacje uprawnień przyznanych lub unieważnionych. Dla:
np. aplikacja aparatu może wyświetlać listę
CAMERA
,READ_CONTACTS
iACCESS_FINE_LOCATION
w pliku manifestu. Musisz przetestować aplikację z każdym z tych uprawnień włączone i wyłączone, aby mieć pewność, że aplikacja będzie mogła obsłużyć wszystkie uprawnienia. konfiguracji. - Do zarządzania użyj narzędzia adb.
z wiersza poleceń:
- Lista uprawnień i stanu według grupy:
$ adb shell pm list permissions -d -g
- Przyznaj lub anuluj co najmniej jedno uprawnienie:
$ adb shell pm [grant|revoke] <permission-name> ...
- Lista uprawnień i stanu według grupy:
- Przeanalizuj aplikację pod kątem usług, które korzystają z uprawnień.
Dodatkowe materiały
- Wytyczne dotyczące stylu Material Design dotyczące uprawnień Androida
- Android Marshmallow 6.0: prośba o uprawnienia: film przedstawiający model uprawnień w czasie wykonywania aplikacji na Androidzie oraz właściwy sposób proszenia użytkowników o uprawnienia.
- Wyjaśnij, dlaczego aplikacja potrzebuje uprawnień
- Sprawdzone metody dotyczące unikalnych identyfikatorów