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 o obsługiwaniu uprawnień w kodzie znajdziesz w artykule Wysyłanie żądania uprawnień aplikacji.
Uprawnienia w Androidzie 6.0 i nowszych
W Androidzie 6.0 (poziom interfejsu API 23) i nowszych aplikacje mogą prosić o uprawnienia użytkownika 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. Chociaż nie (koniecznie) zmieni to ogólnego zachowania aplikacji, spowoduje kilka zmian dotyczących sposobu obsługi danych wrażliwych użytkownika:
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 prośba o uprawnienia, oraz niezgodność między żądaniami a przeznaczeniem aplikacji, 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, używaj tylko promptu gdy wymagana jest 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ść przyznawania uprawnień
Użytkownicy mogą odmówić dostępu do poszczególnych uprawnień, gdy o to poprosisz i w ustawieniach, ale wciąż mogą być zaskoczeni, gdy funkcja z powodu tego problemu. Warto sprawdzać, ilu użytkowników odmawia udzielenia uprawnień (np. w przypadku Google Analytics). Dzięki temu możesz zmienić aplikację, aby nie była ona zależna od tych uprawnień, lub lepiej wyjaśnić użytkownikom, dlaczego są one potrzebne do jej prawidłowego działania. 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 do grup uprawnień pojedynczo, a nie jako zestawu. Ten dlatego niezwykle ważne jest zminimalizowanie liczby uprawnień. z prośbą o zgodę na wykorzystanie danych. Zwiększa to obciążenie użytkownika związane z przyznawaniem uprawnień, zwiększa prawdopodobieństwo odrzucenia co najmniej jednego żądania.
Uprawnienia wymagające 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 rejestrów połączeń lub wiadomości SMS oraz opublikować aplikację w Sklepie Play, ustawić aplikację jako domyślny moduł obsługi podstawowej funkcji systemu przed z żądaniem tych uprawnień 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.
Informacje o bibliotekach, 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 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 lokalizacji powinien być niezbędny do działania jej podstawowej funkcji i przynosić użytkownikom wyraźne korzyści.
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. Przed Androidem 6.0 można było założyć, że jeśli aplikacja działa, ma wszystkie uprawnienia zadeklarowane w jej pliku manifestu. 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ń.
Na urządzeniach z poziomem interfejsu API 23 lub wyższym te wskazówki pomogą Ci znaleźć problemy z kodem związane z uprawnieniami:
- Zidentyfikuj aktualne uprawnienia aplikacji i powiązane ścieżki kodu.
- testować przepływy danych użytkownika w usługach i danych chronionych przez uprawnienia;
- 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. Aby mieć pewność, że aplikacja prawidłowo obsługuje wszystkie konfiguracje uprawnień, przetestuj ją z włączonymi i wyłączonymi uprawnieniami. - 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:
- Sprawdź, czy w aplikacji są usługi, 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 zgodę: w tym filmie wyjaśniamy model uprawnień czasu działania Androida i właściwy sposób proszenia użytkowników o zgodę na uprawnień.
- Wyjaśnij, dlaczego aplikacja potrzebuje uprawnień
- Sprawdzone metody dotyczące unikalnych identyfikatorów