Konum, mikrofon ve kamera ile ilgili izinler, uygulamanızın kullanıcılar hakkındaki hassas bilgilere erişmesine izin verir. Platformda, kullanıcıların bilgilendirilmesine ve hangi uygulamaların konum, mikrofon ve kameraya erişebileceği konusunda kontrol elde edilmesine yardımcı olmak için bu sayfada açıklanan birkaç mekanizma bulunur.
Gizliliği koruyan bu sistem özellikleri, gizlilikle ilgili en iyi uygulamaları izlediğiniz sürece uygulamanızın konum, mikrofon ve kamerayla ilgili izinleri nasıl işleyeceğini etkilemez.
Uygulamanızda özellikle aşağıdakileri yaptığınızdan emin olun:
- Kullanıcı, uygulamanıza
CAMERA
iznini verene kadar cihazın kamerasına erişmeyi bekleyin. - Kullanıcı, uygulamanıza
RECORD_AUDIO
izni verene kadar cihazın mikrofonuna erişmek için bekleyin. - Konum izinleri isteme ile ilgili kılavuzda açıklandığı gibi,
ACCESS_COARSE_LOCATION
veyaACCESS_FINE_LOCATION
iznini istemeden önce kullanıcı, uygulamanızda konum gerektiren bir özellikle etkileşimde bulunana kadar bekleyin. ACCESS_BACKGROUND_LOCATION
iznini istemeden önce kullanıcı uygulamanızaACCESS_COARSE_LOCATION
veyaACCESS_FINE_LOCATION
iznini verene kadar bekleyin.
Gizlilik Kontrol Paneli
Android 12 veya sonraki sürümleri çalıştıran desteklenen cihazlarda sistem ayarlarında bir Gizlilik Kontrol Paneli ekranı görünür. Bu ekranda kullanıcılar, uygulamaların konum, kamera ve mikrofon bilgilerine eriştiğini gösteren ayrı ekranlara erişebilir. Her ekranda, farklı uygulamaların belirli bir veri türüne ne zaman eriştiğine dair bir zaman çizelgesi gösterilir. Şekil 1'de konum bilgilerine ilişkin veri erişim zaman çizelgesi gösterilmektedir.
Veri erişiminin gerekçesini göster
Kullanıcılar, uygulamanızın konum, kamera veya mikrofon bilgilerine neden eriştiğini anlamalarına yardımcı olacak bir gerekçe sunabilir. Bu gerekçe yeni Gizlilik Kontrol Paneli ekranında, uygulamanızın izinler ekranında veya her ikisinde de gösterilebilir.
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 gösterdiğiyle ilgili gerekçe sağlayan bir etkinlik ekleyin. Bu etkinlikte
android:permission
özelliğiniSTART_VIEW_PERMISSION_USAGE
olarak ayarlayın.Uygulamanız Android 12 veya sonraki bir sürümü 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, izin kullanım amacını çağırırken sistemin içerdiği ekstra özellikleri ele alın:
- 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
çağırırsa uygulamanızEXTRA_PERMISSION_GROUP_NAME
,EXTRA_ATTRIBUTION_TAGS
,EXTRA_START_TIME
veEXTRA_END_TIME
için değerler 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ürler:
VIEW_PERMISSION_USAGE
işlemini içeren intent filtresini eklerseniz kullanıcılar bu simgeyi sistem ayarlarında uygulamanızın izinler sayfasında 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ümleri çalıştıran cihazlarda bir uygulama mikrofona veya kameraya eriştiğinde durum çubuğunda bir simge görünür. Uygulama kapsamlı modda ise simge ekranın sağ üst köşesinde görünür. Kullanıcılar, o anda hangi uygulamaların mikrofonu veya kamerayı kullandığını görmek için Hızlı Ayarlar'ı açıp simgeyi seçebilir. Şekil 2'de, simgeleri içeren örnek bir ekran görüntüsü gösterilmektedir.
Göstergelerin ekrandaki konumunu belirleyin
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ü ile ç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 kullanıma sunar. Bu API'yi kullanarak göstergelerin görünebileceği sınırları belirleyebilirsiniz. Sonrasında ekranınızın kullanıcı arayüzünü
farklı bir şekilde düzenlemeye karar verebilirsiniz.
Kotlin
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
Açar/Kapatır
Android 12 veya sonraki sürümleri çalıştıran desteklenen cihazlarda kullanıcılar, tek bir açma/kapatma seçeneğine basarak cihazdaki tüm uygulamaların kamera ve mikrofon erişimini etkinleştirip devre dışı bırakabilir. Kullanıcılar, Şekil 3'te gösterildiği gibi Hızlı Ayarlar'dan veya sistem ayarlarındaki Gizlilik ekranından açılıp kapatılabilir seçeneklere erişebilirler.
Kamera ve mikrofon açma/kapatma anahtarları cihazdaki tüm uygulamaları etkiler:
- Kullanıcı kamera erişimini devre dışı bıraktığı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_SENSORS
iznini beyan etmiş olsanız da olmasanız da hareket sensörleri hız sınırlamasına sahiptir.
Kullanıcı kamera veya mikrofon erişimini kapattıktan sonra kamera veya mikrofon bilgilerine erişmesi gereken bir uygulama başlattığında sistem, kullanıcıya cihaz genelindeki açma/kapatma anahtarının kapalı olduğunu hatırlatır.
Cihaz desteğini kontrol edin
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);