Uprawnienia związane z lokalizacją, mikrofonem i kamerą zapewniają aplikacji dostęp do szczególnie wrażliwych informacji o użytkownikach. Platforma zawiera kilka mechanizmów opisanych na tej stronie, które pomagają użytkownikom mieć kontrolę nad tym, które aplikacje mogą mieć dostęp do lokalizacji, mikrofonu i aparatu.
Te chroniące prywatność funkcje systemowe nie powinny mieć wpływu na sposób obsługi aplikacji uprawnienia związane z lokalizacją, mikrofonem i aparatem, o ile przestrzegać sprawdzonych metod ochrony prywatności.
W szczególności upewnij się, że w aplikacji:
- Zaczekaj, aż użytkownik przyzna aplikacji uprawnienie
CAMERA
do korzystania z kamery urządzenia. - Poczekaj, zanim użytkownik przyzna dostęp do mikrofonu urządzenia
RECORD_AUDIO
swojej aplikacji. - poczekaj, aż użytkownik wejdzie w interakcję z funkcją aplikacji, która wymaga tej funkcji.
lokalizacji, zanim poprosisz o
ACCESS_COARSE_LOCATION
lubACCESS_FINE_LOCATION
zgodnie z opisem w przewodniku wysyłania próśb o udostępnienie lokalizacji uprawnienia. - Poczekaj, aż użytkownik przyzna aplikacji:
ACCESS_COARSE_LOCATION
lubACCESS_FINE_LOCATION
, zanim poprosisz oACCESS_BACKGROUND_LOCATION
uprawnienia.
Panel prywatności
Na obsługiwanych urządzeniach z Androidem 12 lub nowszym w ustawieniach systemowych pojawi się ekran Pulpit prywatności. Na tym ekranie użytkownicy mogą uzyskać dostęp do osobnych ekranów, na których widać, kiedy aplikacje uzyskują dostęp do informacji o lokalizacji, aparatu i mikrofonu. Na każdym ekranie widać oś czasu z danymi aplikacjami, które korzystały z określonego typu danych. Rysunek 1 przedstawia oś czasu dostępu do danych dla lokalizacji i informacjami o nich.
Pokaż uzasadnienie dostępu do danych
Aplikacja może zawierać uzasadnienie, które pomoże użytkownikom zrozumieć, dlaczego aplikacja uzyskuje dostęp do informacji o lokalizacji, aparacie lub mikrofonie. Ten opis może się wyświetlać na nowym ekranie ustawień prywatności lub na ekranie uprawnień aplikacji albo na obu tych ekranach.
Aby wyjaśnić, dlaczego Twoja aplikacja uzyskuje dostęp do informacji o lokalizacji, aparacie i mikrofonie, wykonaj te czynności:
Dodaj aktywność, która po uruchomieniu wyjaśnia, dlaczego aplikacja wykonuje określone działanie związane z dostępem do danych. W ramach tej aktywności ustaw Atrybut
android:permission
doSTART_VIEW_PERMISSION_USAGE
.Jeśli aplikacja jest kierowana na Androida 12 lub nowszego, musisz wyraźnie wskazać, podaj wartość parametru
android:exported
.Do nowo dodanego działania dodaj ten filtr intencji:
<!-- android:exported required if you target Android 12. --> <activity android:name=".DataAccessRationaleActivity" android:permission="android.permission.START_VIEW_PERMISSION_USAGE" android:exported="true"> <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on your app permission's page in system settings. VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information icon on the Privacy Dashboard screen. --> <intent-filter> <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" /> <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" /> <category android:name="android.intent.category.DEFAULT" /> ... </intent-filter> </activity>
Określ, co ma się wyświetlać w ramach uzasadnienia dostępu do danych. Na przykład: może wyświetlić się strona Twojej aplikacji lub artykuł w Centrum pomocy. Aby uzyskać bardziej szczegółowe informacje o typach danych, do których aplikacja ma dostęp, oraz o czasie, w którym miał miejsce dostęp, obsłuż dodatkowe informacje, które system uwzględnia podczas wywoływania intencji użycia uprawnienia:
- Jeśli system wywoła funkcję
ACTION_VIEW_PERMISSION_USAGE
, aplikacja może pobierz wartość dla argumentuEXTRA_PERMISSION_GROUP_NAME
- Jeśli system wywołuje
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD
, aplikacja może pobrać wartościEXTRA_PERMISSION_GROUP_NAME
,EXTRA_ATTRIBUTION_TAGS
,EXTRA_START_TIME
iEXTRA_END_TIME
.
- Jeśli system wywoła funkcję
W zależności od dodanych filtrów intencji użytkownicy widzą ikonę informacji obok nazwy aplikacji na określonych ekranach:
- Jeśli dodasz filtr intencji, który zawiera atrybut
VIEW_PERMISSION_USAGE
użytkownicy widzą ikonę na stronie uprawnień aplikacji w ustawieniach systemu. Możesz zastosować to działanie do wszystkich uprawnień w czasie wykonywania. - Jeśli dodasz filtr intencji zawierający działanie
VIEW_PERMISSION_USAGE_FOR_PERIOD
, użytkownicy zobaczą ikonę obok nazwy aplikacji za każdym razem, gdy aplikacja pojawi się na ekranie Panelu prywatności.
Gdy użytkownicy klikną tę ikonę, rozpocznie się uzasadnienie działania aplikacji.
Wskaźniki
Na urządzeniach z Androidem 12 lub nowszym, gdy aplikacja uzyskuje dostęp do mikrofonu lub aparatu, na pasku stanu pojawia się ikona. Jeśli aplikacja jest w w trybie pojemnym, ikona w prawym górnym rogu ekranu. Użytkownicy mogą otworzyć Szybkie ustawienia i wybrać kliknij ikonę, aby zobaczyć, które aplikacje używają obecnie mikrofonu lub aparatu. Rysunek 2 przedstawia przykładowy zrzut ekranu z ikonami.
Określanie lokalizacji wskaźników na ekranie
Jeśli aplikacja obsługuje tryb pełnoekranowy lub interfejs pełnoekranowy, wskaźniki mogą chwilowo nakładać się na interfejs aplikacji. Aby dostosować interfejs do tych wskaźników,
system wprowadza
getPrivacyIndicatorBounds()
omówiono w tym fragmencie kodu. Za pomocą tego interfejsu API możesz:
i określanie granic, gdzie mogą pojawić się wskaźniki. Możesz wtedy zdecydować się
uporządkować interfejs ekranu w inny sposób.
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
Przełącza
na obsługiwanych urządzeniach, które działają Androida 12 lub nowszego, użytkownicy mogą włączać i wyłączać aparat oraz dostęp do mikrofonu dla wszystkich aplikacji na urządzeniu przez naciśnięcie jednego przełącznika . Użytkownicy mogą uzyskać dostęp do opcji przełączania w Szybkich ustawieniach (patrz rysunek 3) lub na ekranie Prywatność w ustawieniach systemu.
Przełączniki aparatu i mikrofonu mają wpływ na wszystkie aplikacje na urządzeniu:
- Gdy użytkownik wyłączy dostęp do kamery, aplikacja otrzyma pusty obraz z kamery.
Gdy użytkownik wyłączy dostęp do mikrofonu, aplikacja otrzyma cichy dźwięk. Dodatkowo czujniki ruchu są objęte ograniczeniami, niezależnie od tego, czy zadeklarujesz
HIGH_SAMPLING_RATE_SENSORS
uprawnienia.
Gdy użytkownik wyłączy dostęp do aparatu lub mikrofonu, a następnie uruchomi aplikację, która potrzebuje dostępu do informacji z kamery lub mikrofonu, system przypomni mu, że przełącznik na poziomie urządzenia jest wyłączony.
Sprawdzanie obsługi urządzenia
Aby sprawdzić, czy urządzenie obsługuje przełączniki mikrofonu i kamery, dodaj logikę widoczną w tym fragmencie kodu:
val sensorPrivacyManager = applicationContext .getSystemService(SensorPrivacyManager::class.java) as SensorPrivacyManager val supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE) val supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA)
SensorPrivacyManager sensorPrivacyManager = getApplicationContext() .getSystemService(SensorPrivacyManager.class); boolean supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE); boolean supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA);