Konum, mikrofon ve kamerayla ilgili izinler, uygulamanıza kullanıcılarla ilgili özellikle hassas bilgilere erişim hakkı verir. Platformda, kullanıcıların hangi uygulamaların konuma, mikrofona ve kameraya erişebileceği konusunda bilgi sahibi olmalarına ve kontrolü ellerinde tutmalarına yardımcı olmak için bu sayfada açıklanan çeşitli mekanizmalar bulunur.
Gizlilikle ilgili en iyi uygulamalardan yararlandığınız sürece, gizliliği korumaya yönelik bu sistem özellikleri uygulamanızın konum, mikrofon ve kamerayla ilgili izinleri işleme şeklini etkilemez.
Özellikle uygulamanızda aşağıdakileri yaptığınızdan emin olun:
- Kullanıcı uygulamanıza
CAMERAizni verene kadar cihazın kamerasına erişmeyin. - Kullanıcı uygulamanıza
RECORD_AUDIOizni verene kadar cihazın mikrofonuna erişmek için bekleyin. ACCESS_COARSE_LOCATIONveyaACCESS_FINE_LOCATIONizni istemeden önce kullanıcının uygulamanızda konum gerektiren bir özellikle etkileşimde bulunmasını bekleyin. Bu konuda daha fazla bilgi için konum izinleri isteme ile ilgili kılavuzu inceleyin.ACCESS_BACKGROUND_LOCATIONiznini istemeden önce kullanıcının uygulamanızaACCESS_COARSE_LOCATIONveyaACCESS_FINE_LOCATIONiznini vermesini bekleyin.
Gizlilik Kontrol Paneli
Android 12 veya sonraki sürümlerin yüklü olduğu desteklenen cihazlarda sistem ayarlarında Gizlilik Kontrol Paneli ekranı görünür. Kullanıcılar bu ekrandan, 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ğini gösteren bir zaman çizelgesi yer alır. Şekil 1'de konum bilgileri için veri erişimi zaman çizelgesi gösterilmektedir.
Veri erişiminin gerekçesini gösterme
Uygulamanız, kullanıcıların uygulamanızın konum, kamera veya mikrofon bilgilerine neden eriştiğini anlamalarına yardımcı olacak bir açıklama sağlayabilir. Bu açıklama 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 belirli bir veri erişimi işlemi türünü neden gerçekleştirdiğine dair gerekçe sunan bir etkinlik ekleyin. Bu etkinlikte
android:permissionözelliğiniSTART_VIEW_PERMISSION_USAGEolarak 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 ne zaman gerçekleştiği hakkında daha ayrıntılı bir açıklama sağlamak için sistemin izin kullanımı amacını çağırırken eklediği ekstraları işleyin:
- Sistem
ACTION_VIEW_PERMISSION_USAGEyöntemini çağırırsa uygulamanızEXTRA_PERMISSION_GROUP_NAMEiçin bir değer alabilir. - Sistem
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIODyöntemini çağırırsa uygulamanızEXTRA_PERMISSION_GROUP_NAME,EXTRA_ATTRIBUTION_TAGS,EXTRA_START_TIMEveEXTRA_END_TIMEdeğerlerini alabilir.
- Sistem
Eklediğiniz intent 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_USAGEişlemini içeren intent filtresini eklerseniz kullanıcılar, sistem ayarlarındaki uygulamanızın izinler sayfasında simgeyi görür. Bu işlemi, çalışma zamanında istenen tüm izinlere uygulayabilirsiniz.VIEW_PERMISSION_USAGE_FOR_PERIODişlemini içeren intent filtresini eklerseniz uygulamanız Gizlilik Kontrol Paneli ekranında 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 açıklama 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 yoğun içerik modundaysa simge, ekranın sağ üst köşesinde görünür. Kullanıcılar, Hızlı Ayarlar'ı açıp simgeyi seçerek mikrofonu veya kamerayı kullanan uygulamaları görebilir. Şekil 2'de, simgeleri içeren örnek bir ekran görüntüsü gösterilmektedir.
Göstergelerin ekrandaki konumunu belirleme
Uygulamanız yoğun içerik modunu veya tam ekran kullanıcı arayüzünü destekliyorsa göstergeler anlık olarak uygulamanızın kullanıcı arayüzüyle çakışabilir. Kullanıcı arayüzünüzü bu göstergelere uyarlamanıza yardımcı olmak için sistem, aşağıdaki kod snippet'inde gösterilen getPrivacyIndicatorBounds() yöntemini sunar. 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 ve devre dışı bırakabilir. Kullanıcılar, açma/kapatma seçeneklerine Şekil 3'te gösterildiği gibi 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 kapattığında uygulamanız boş bir kamera feed'i alır.
Kullanıcı mikrofon erişimini kapattığında uygulamanız sessiz ses alır. Ayrıca
HIGH_SAMPLING_RATE_SENSORSiznini beyan edip etmediğinizden bağımsız olarak hareket sensörleri sıklık sınırlamasına tabidir.
Kullanıcı, kamera veya mikrofon erişimini kapattıktan sonra kamera ya da mikrofon bilgilerine erişmesi gereken bir uygulamayı başlattığında sistem, kullanıcıya cihaz genelindeki açma/kapatma düğmesinin kapalı olduğunu 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);