Prośby o uprawnienia chronią poufne informacje dostępne na urządzeniu i powinny być używane tylko wtedy, gdy dostęp do informacji jest niezbędny do działania aplikacji. W tym dokumencie znajdziesz wskazówki, jak uzyskać te same (lub lepsze) funkcje bez konieczności uzyskiwania dostępu do takich informacji. Nie jest to jednak wyczerpujące omówienie sposobu działania uprawnień w systemie operacyjnym Android.
Więcej informacji o uprawnieniach na Androida znajdziesz w artykule Omówienie uprawnień. Szczegółowe informacje o obsługiwaniu uprawnień w kodzie znajdziesz w artykule Wysyłanie żądania uprawnień aplikacji.
Uprawnienia w Androidzie 6.0 lub nowszym
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 faktycznie wymagają usług lub danych chronionych przez te usługi. Chociaż nie (koniecznie) zmienia to ogólnego zachowania aplikacji, wprowadza kilka zmian dotyczących sposobu postępowania z danymi wrażliwymi użytkownika:
zwiększenie kontekstu sytuacyjnego,
W czasie działania aplikacji użytkownicy są proszeni o dostęp do funkcji objętych tymi grupami uprawnień. Użytkownicy są bardziej wrażliwi na kontekst, w którym prosisz o uprawnienia. Jeśli występuje niezgodność między tym, o co prosisz, a celem aplikacji, jeszcze ważniejsze jest szczegółowe wyjaśnienie użytkownikowi, dlaczego prosisz o uprawnienia. W miarę możliwości wyjaśnij użytkownikowi, dlaczego prosisz o te dane, zarówno w momencie wysłania prośby, jak i w kolejnych oknach dialogowych, jeśli użytkownik odmówi.
Aby zwiększyć prawdopodobieństwo zaakceptowania prośby o uprawnienia, wyświetlaj ją tylko wtedy, gdy jest wymagana konkretna funkcja. Na przykład możesz poprosić o dostęp do mikrofonu tylko wtedy, gdy użytkownik kliknie przycisk mikrofonu. Użytkownicy chętniej udzielają uprawnień, których oczekują.
Większa elastyczność w przyznawaniu uprawnień
Użytkownicy mogą odmówić dostępu do poszczególnych uprawnień w momencie, gdy zostaną o to poproszeni oraz w ustawieniach, ale mogą być zaskoczeni, gdy funkcja nie będzie działać. Warto sprawdzać, ilu użytkowników odmawia udzielenia uprawnień (np.do korzystania z Google Analytics). Dzięki temu możesz zmienić aplikację, aby nie zależała od tych uprawnień, lub lepiej wyjaśnić użytkownikom, dlaczego są one potrzebne do jej prawidłowego działania. Musisz też zadbać o to, aby aplikacja obsługiwała wyjątki, gdy użytkownicy odmówią przyznania uprawnień lub wyłączą je w ustawieniach.
Zwiększone obciążenie transakcyjne
Użytkownicy są proszeni o przyznanie dostępu do grup uprawnień pojedynczo, a nie jako zestawu. Dlatego bardzo ważne jest, aby zminimalizować liczbę żądanych uprawnień. Zwiększa to obciążenie użytkownika koniecznością udzielenia uprawnień, a w konsekwencji zwiększa prawdopodobieństwo odrzucenia co najmniej jednego żądania.
Uprawnienia, które wymagają stania się domyślnym modułem obsługi
Niektóre aplikacje wymagają dostępu do poufnych informacji użytkownika związanych z rejestrami połączeń i SMS-ami. 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 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 dotyczące wyświetlania użytkownikom prompta domyślnego modułu obsługi, znajdziesz w przewodniku dotyczącym uprawnień używanych tylko w domyślnych modułach obsługi.
Poznaj biblioteki, z którymi pracujesz
Czasami biblioteki używane w aplikacji wymagają uprawnień. Na przykład biblioteki reklam i analiz mogą wymagać dostępu do grupy uprawnień LOCATION
, aby zaimplementować wymaganą funkcjonalność. Z punktu widzenia użytkownika prośba o uprawnienia pochodzi z aplikacji, a nie z biblioteki.
Podobnie jak użytkownicy wybierają aplikacje, które wymagają mniejszej liczby uprawnień do realizacji tych samych funkcji, deweloperzy powinni sprawdzać swoje biblioteki i wybierać pakiety SDK innych firm, które nie wykorzystują niepotrzebnych uprawnień. Jeśli na przykład używasz biblioteki, która udostępnia funkcję lokalizacji, nie proś o uprawnienia FINE_LOCATION
, chyba że używasz funkcji kierowania na podstawie lokalizacji.
Ograniczanie dostępu do lokalizacji w tle
Gdy aplikacja działa w tle, dostęp do lokalizacji powinien być niezbędny do działania jej podstawowej funkcji i przynosić użytkownikom wyraźne korzyści.
Testowanie obu modeli uprawnień
W Androidzie 6.0 (poziom interfejsu API 23) i nowszych użytkownicy przyznają i odwołują uprawnienia aplikacji w czasie jej działania, a nie podczas instalacji. W rezultacie musisz przetestować aplikację w szerszym zakresie. Przed Androidem 6.0 można było założyć, że jeśli aplikacja działa, ma wszystkie uprawnienia zadeklarowane w pliku manifestu. Użytkownik może teraz włączać i wyłączać uprawnienia dowolnej aplikacji niezależnie od poziomu interfejsu API. Należy przetestować aplikację, aby mieć pewność, że działa prawidłowo w różnych scenariuszach dotyczących uprawnień.
Te wskazówki pomogą Ci znaleźć problemy z kodem związanym z uprawnieniami na urządzeniach z poziomem API 23 lub wyższym:
- Zidentyfikuj bieżące uprawnienia aplikacji i powiązane ścieżki kodu.
- testować przepływy danych użytkownika w usługach i danych chronionych uprawnieniami.
- Testuj różne kombinacje przyznanych lub cofniętych uprawnień. Na przykład aplikacja aparatu może zawierać w pliku manifestu elementy
CAMERA
,READ_CONTACTS
iACCESS_FINE_LOCATION
. Aby mieć pewność, że aplikacja prawidłowo obsługuje wszystkie konfiguracje uprawnień, przetestuj ją z włączonymi i wyłączonymi uprawnieniami. - Aby zarządzać uprawnieniami z poziomu wiersza poleceń, użyj narzędzia adb:
- Lista uprawnień i stanu według grupy:
$ adb shell pm list permissions -d -g
- Przyznaj lub cofnij co najmniej 1 uprawnienie:
$ adb shell pm [grant|revoke] <permission-name> ...
- Lista uprawnień i stanu według grupy:
- Sprawdź, czy w aplikacji są usługi, które korzystają z uprawnień.
Dodatkowe materiały
- Wytyczne dotyczące uprawnień w Material Design na Androida
- Urządzenia z Androidem Marshmallow 6.0: prośba o uprawnienia: ten film przedstawia 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 stosowania unikalnych identyfikatorów