0Pricing
Android Academy · Lekcja

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
  • shouldShowRequestPermissionRationale sygnalizuje, 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

  1. Model uprawnień Androida
  2. Żądanie uprawnień w Compose
  3. Obsługa odmów i uzasadnianie próśb
  4. Dobre praktyki ochrony prywatności
← Powrót do Android Academy