Sprawdzone metody dotyczące uprawnień aplikacji

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_CONTACTSACCESS_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> ...
  • Sprawdź, czy w aplikacji są usługi, które korzystają z uprawnień.

Dodatkowe materiały