Obsługa odmów i uzasadnianie próśb
Wyjaśnij, dlaczego potrzebujesz danego uprawnienia
Obsługa odmów i uzasadnianie próśb to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.
Obsługa odmów
Użytkownicy mogą odmówić uprawnienia, a także odmówić go na stałe. Dopracowana aplikacja prawidłowo obsługuje wszystkie stany: przyznanie, jednorazową odmowę oraz odmowę z opcją „nie pytaj ponownie”.
Trzy możliwe stany
Po wysłaniu żądania mogą Państwo znaleźć się w jednym z trzech stanów:
- Przyznano: można korzystać z funkcji
- Odmówiono (można zapytać ponownie): należy wyjaśnić powód i ponownie wysłać żądanie
- Odmówiono na stałe: okno dialogowe nie pojawi się ponownie; należy pokierować użytkownika do Ustawień
Czym jest uzasadnienie
Uzasadnienie to krótkie wyjaśnienie, dlaczego aplikacja potrzebuje danego uprawnienia. Android informuje, kiedy należy je wyświetlić, za pomocą shouldShowRequestPermissionRationale.
shouldShowRequestPermissionRationale
Ta metoda zwraca true, gdy użytkownik co najmniej raz odmówił uprawnienia, ale nie wybrał opcji „nie pytaj ponownie”. Jest to sygnał, aby przed ponownym wysłaniem żądania wyjaśnić jego przyczynę.
val activity = LocalContext.current as Activity
val showRationale = ActivityCompat
.shouldShowRequestPermissionRationale(
activity,
Manifest.permission.CAMERA
)Odczytywanie sygnału
Wartość należy interpretować razem ze sprawdzeniem przyznania uprawnienia:
- Przyznano: nic nie trzeba robić
- Nie przyznano i
shouldShowRationale == true: należy wyświetlić wyjaśnienie, a następnie ponownie wysłać żądanie - Nie przyznano i
shouldShowRationale == false: jest to albo pierwsze żądanie, albo uprawnienie zostało odrzucone na stałe
Wyświetlanie dialogu z uzasadnieniem
Gdy potrzebne jest uzasadnienie, należy przed ponownym uruchomieniem żądania systemowego wyświetlić przyjazny dialog, aby użytkownik rozumiał korzyści.
if (showRationale) {
AlertDialog(
onDismissRequest = { },
title = { Text("Camera needed") },
text = { Text("We use the camera to scan codes.") },
confirmButton = {
TextButton(onClick = {
launcher.launch(Manifest.permission.CAMERA)
}) { Text("Continue") }
}
)
}Wykrywanie trwałej odmowy
Jeśli uprawnienie nadal nie jest przyznane, a po wcześniejszym wysłaniu żądania shouldShowRationale ma wartość false, należy uznać je za odrzucone na stałe. Systemowe okno dialogowe nie pojawi się już ponownie.
Śledzenie, czy wysłano żądanie
Ponieważ shouldShowRationale ma również wartość false przy pierwszym żądaniu, należy przechowywać flagę (np. w DataStore) informującą, że żądanie wysłano co najmniej raz. Umożliwi to odróżnienie pierwszego żądania od trwałej odmowy.
Przekierowywanie użytkowników do Ustawień
Po trwałej odmowie nie można ponownie wyświetlić prośby. Należy zaoferować przycisk otwierający stronę ustawień aplikacji, aby użytkownik mógł ręcznie przyznać uprawnienie.
fun openAppSettings(context: Context) {
val intent = Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", context.packageName, null)
)
context.startActivity(intent)
}Projektowanie interfejsu po odmowie
Nie należy pozostawiać pustego ani uszkodzonego ekranu po odmowie. Trzeba wyświetlić jasny komunikat, wyjaśnić konsekwencje i zaoferować właściwe działanie: ponowne żądanie, otwarcie Ustawień albo dalsze korzystanie z ograniczoną funkcjonalnością.
Szanuj wybór użytkownika
Nie należy wywierać presji. Jeśli użytkownik odmówił, nie wolno zasypywać go prośbami na każdym ekranie. Należy ponownie pytać tylko wtedy, gdy wybierze działanie wymagające danej funkcji, a w pozostałych przypadkach zapewnić poprawne działanie z ograniczeniami.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat odmów i uzasadnień.
Podsumowanie
Nauczyli się Państwo obsługi odmów:
- Trzy stany: przyznano, odmówiono, odmówiono na stałe
shouldShowRequestPermissionRationalesygnalizuje, kiedy należy wyświetlić wyjaśnienie- Należy śledzić, czy wysłano żądanie, aby wykryć trwałą odmowę
- W przypadku trwałej odmowy należy przekierować użytkownika do Ustawień aplikacji
- Trzeba projektować przejrzysty interfejs stanu odmowy i unikać natarczywych próśb
Następnie: najlepsze praktyki dotyczące prywatności.
Często zadawane pytania
Czy lekcja „Obsługa odmów i uzasadnianie próśb” jest bezpłatna?
Tak — pełny tekst „Obsługa odmów i uzasadnianie próśb” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Obsługa odmów i uzasadnianie próśb”?
Wyjaśnij, dlaczego potrzebujesz danego uprawnienia Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Android Academy?
Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Obsługa odmów i uzasadnianie próśb”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?
Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Model uprawnień Androida
- Żądanie uprawnień w Compose
- Obsługa odmów i uzasadnianie próśb
- Dobre praktyki ochrony prywatności