Konum, mikrofon ve kamerayla ilgili izinler, uygulamanıza kullanıcılarla ilgili özellikle hassas bilgilere erişim izni verir. Platformda, kullanıcıların hangi uygulamaların konum, mikrofon ve kameraya erişebileceği konusunda bilgi sahibi olmasına ve kontrolü elinde tutmasına yardımcı olmak için bu sayfada açıklanan çeşitli mekanizmalar bulunur.
Gizliliği koruyan bu sistem özellikleri, gizlilikle ilgili en iyi uygulamaları takip ettiğiniz sürece uygulamanızın konum, mikrofon ve kamerayla ilgili izinleri nasıl işlediğini etkilemez.
Özellikle uygulamanızda aşağıdakileri yaptığınızdan emin olun:
- Kullanıcı, uygulamanıza
CAMERA
izni verene kadar cihazın kamerasına erişmek için bekleyin. - Kullanıcı, uygulamanıza
RECORD_AUDIO
izni verene kadar cihazın mikrofonuna erişmek için bekleyin. - Konum izinleri isteme ile ilgili rehberde açıklandığı gibi,
ACCESS_COARSE_LOCATION
veyaACCESS_FINE_LOCATION
iznini istemeden önce kullanıcının uygulamanızda konum gerektiren bir özellikle etkileşim kurmasını bekleyin. ACCESS_BACKGROUND_LOCATION
iznini istemeden önce kullanıcının uygulamanızaACCESS_COARSE_LOCATION
iznini veyaACCESS_FINE_LOCATION
iznini vermesini bekleyin.
Gizlilik Kontrol Paneli
Android 12 veya sonraki sürümlerin yüklü olduğu desteklenen cihazlarda sistem ayarlarında bir Gizlilik Kontrol Paneli ekranı gösterilir. Bu ekranda kullanıcılar, uygulamaların konum, kamera ve mikrofon bilgilerine ne zaman eriştiğini gösteren ayrı ekranlara erişebilir. Her ekranda, farklı uygulamaların belirli bir veri türüne ne zaman eriştiğinin zaman çizelgesi gösterilir. Şekil 1'de konum bilgileri için veri erişimi zaman çizelgesi gösterilmektedir.
Veri erişimiyle ilgili gerekçeyi göster
Uygulamanız, kullanıcılara konum, kamera veya mikrofon bilgilerine neden eriştiğini anlamaları için bir gerekçe sunabilir. Bu gerekçe yeni gizlilik kontrol paneli ekranında, uygulamanızın izinler ekranında veya her ikisinde de görünebilir.
Uygulamanızın konum, kamera ve mikrofon bilgilerine neden eriştiğini açıklamak için aşağıdaki adımları tamamlayın:
Başlatıldığında uygulamanızın neden belirli bir türde veri erişimi işlemi gerçekleştirdiğine dair bir gerekçe sunan bir etkinlik ekleyin. Bu etkinlikte
android:permission
özelliğiniSTART_VIEW_PERMISSION_USAGE
olarak ayarlayın.Uygulamanız Android 12 veya sonraki sürümleri hedefliyorsa
android:exported
özelliği için açıkça bir değer tanımlamanız gerekir.Yeni eklenen etkinliğe aşağıdaki intent filtresini ekleyin:
<!-- 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>
Veri erişimi gerekçesi etkinliğinizin ne göstermesi gerektiğine karar verin. Örneğin, uygulamanızın web sitesini veya bir yardım merkezi makalesini gösterebilirsiniz. Uygulamanızın eriştiği veri türleri ve erişimin gerçekleştiği zaman hakkında daha ayrıntılı bir açıklama sağlamak için sistemin izin kullanımı amacını çağırdığında eklediği ekstraları işleyin:
- Sistem
ACTION_VIEW_PERMISSION_USAGE
yöntemini çağırırsa uygulamanızEXTRA_PERMISSION_GROUP_NAME
için bir değer alabilir. - Sistem
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD
öğesini çağırırsa uygulamanızEXTRA_PERMISSION_GROUP_NAME
,EXTRA_ATTRIBUTION_TAGS
,EXTRA_START_TIME
veEXTRA_END_TIME
değerlerini alabilir.
- Sistem
Eklediğiniz amaç filtrelerine bağlı olarak, kullanıcılar belirli ekranlarda uygulamanızın adının yanında bir bilgi simgesi görür:
VIEW_PERMISSION_USAGE
action öğesini içeren intent filtresini eklerseniz kullanıcılar, sistem ayarlarındaki uygulamanızın izinler sayfasında simgeyi görür. Bu işlemi tüm çalışma zamanı izinlerine uygulayabilirsiniz.VIEW_PERMISSION_USAGE_FOR_PERIOD
işlemini içeren intent filtresini eklerseniz uygulamanız Gizlilik Kontrol Paneli ekranında her göründüğünde kullanıcılar uygulamanızın adının yanında simgeyi görür.
Kullanıcılar bu simgeyi seçtiğinde uygulamanızın gerekçe etkinliği başlatılır.
Göstergeler
Android 12 veya sonraki sürümlerin yüklü olduğu cihazlarda, bir uygulama mikrofona ya da kameraya eriştiğinde durum çubuğunda bir simge görünür. Uygulama tam ekran modundaysa simge ekranın sağ üst köşesinde görünür. Kullanıcılar Hızlı Ayarlar'ı açıp hangi uygulamaların mikrofonu veya kamerayı kullandığını görmek için simgeyi seçebilir. Şekil 2'de, simgeleri içeren örnek bir ekran görüntüsü gösterilmektedir.
Göstergelerin ekran konumunu belirleme
Uygulamanızda tam ekran modu veya tam ekran kullanıcı arayüzü destekleniyorsa göstergeler uygulamanızın kullanıcı arayüzüyle kısa süreliğine çakışabilir. Sistemin kullanıcı arayüzünüzü bu göstergelere uyarlamanıza yardımcı olmak için sunduğu getPrivacyIndicatorBounds()
yöntemini aşağıdaki kod snippet'inde görebilirsiniz. Bu API'yi kullanarak göstergelerin görünebileceği sınırları belirleyebilirsiniz. Ardından ekranınızın kullanıcı arayüzünü farklı şekilde düzenlemeye karar verebilirsiniz.
Kotlin
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
Açma/kapatma düğmeleri
Android 12 veya sonraki sürümlerin yüklü olduğu desteklenen cihazlarda kullanıcılar tek bir açma/kapatma seçeneğine basarak cihazdaki tüm uygulamalar için kamera ve mikrofon erişimini etkinleştirebilir veya devre dışı bırakabilir. Kullanıcılar, Şekil 3'te gösterildiği gibi, açılıp kapatılabilen seçeneklere Hızlı Ayarlar'dan veya sistem ayarlarındaki Gizlilik ekranından erişebilir.
Kamera ve mikrofon açma/kapatma düğmeleri cihazdaki tüm uygulamaları etkiler:
- Kullanıcı kamera erişimini devre dışı bıraktığında uygulamanız boş bir kamera yayını alır.
Kullanıcı mikrofon erişimini kapattığında uygulamanız sessiz ses alır. Ayrıca, hareket sensörleri,
HIGH_SAMPLING_RATE_SENSORS
iznini bildirip bildirmediğinizden bağımsız olarak sıklık sınırına tabidir.
Kullanıcı, kamera veya mikrofona erişimi kapattığında ve kamera ya da mikrofon bilgilerine erişmesi gereken bir uygulamayı başlattığında sistem, cihaza genel açma/kapatma düğmesinin kapalı olduğunu kullanıcıya hatırlatır.
Cihaz desteğini kontrol etme
Bir cihazın mikrofon ve kamera açma/kapatma düğmelerini destekleyip desteklemediğini kontrol etmek için aşağıdaki kod snippet'inde görünen mantığı ekleyin:
Kotlin
val sensorPrivacyManager = applicationContext .getSystemService(SensorPrivacyManager::class.java) as SensorPrivacyManager val supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE) val supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA)
Java
SensorPrivacyManager sensorPrivacyManager = getApplicationContext() .getSystemService(SensorPrivacyManager.class); boolean supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE); boolean supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA);