Daha hassas bilgilere erişimi açıklayın

Konum, mikrofon ve kamera ile ilgili izinler, uygulamanıza özellikle kullanıcılarla ilgili hassas bilgilere erişim izni verir. Platform, kullanıcıların bilgi sahibi olmasına ve hangi uygulamaların konuma, mikrofona ve kameraya erişebileceğini kontrol etmesine yardımcı olmak için bu sayfada açıklanan çeşitli mekanizmalar içerir.

Gizlilikle ilgili en iyi uygulamaları izlediğiniz sürece, gizliliği korumaya yönelik bu sistem özellikleri, uygulamanızın konum, mikrofon ve kamerayla ilgili izinleri işleyiş şeklini 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şmeyi bekleyin.
  • Kullanıcı uygulamanıza RECORD_AUDIO izni verene kadar cihazın mikrofonuna erişmeyi bekleyin.
  • ACCESS_COARSE_LOCATION veya ACCESS_FINE_LOCATION iznini istemeden önce, kullanıcının uygulamanızdaki konum bilgisi gerektiren bir özellikle etkileşim kurmasını bekleyin. Bu işlem, konum izinlerini isteme ile ilgili kılavuzda açıklanmaktadır.
  • ACCESS_BACKGROUND_LOCATION iznini istemeden önce kullanıcının uygulamanıza ACCESS_COARSE_LOCATION veya ACCESS_FINE_LOCATION iznini vermesini bekleyin.

Gizlilik Kontrol Paneli

Dikey zaman çizelgesi, konum bilgilerine erişen farklı uygulamaları ve erişimlerin ne zaman gerçekleştiğini gösterir
Şekil 1. Gizlilik kontrol panelinin bir parçası olan konum kullanımı ekranı.

Android 12 veya sonraki sürümleri çalıştıran 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ğine dair bir zaman çizelgesi gösterilir. Şekil 1'de, konum bilgilerine erişim zaman çizelgesi gösterilmektedir.

Veri erişiminin gerekçesini gösterme

Uygulamanız, konum, kamera veya mikrofon bilgilerine neden eriştiğini kullanıcılara açıklamak 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österilebilir.

Uygulamanızın konum, kamera ve mikrofon bilgilerine neden eriştiğini açıklamak için aşağıdaki adımları uygulayın:

  1. Başlatıldığında uygulamanızın belirli bir veri erişimi işlemini neden gerçekleştirdiğine dair bir açıklama sunan bir etkinlik ekleyin. Bu etkinlikte android:permission özelliğini START_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.

  2. 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>
    
  3. Veri erişimi gerekçesi etkinliğinizin neyi 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ı intent'ini çağırırken sistemin dahil ettiği ekstraları işleyin:

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_USAGE işlemini içeren intent filtresini eklerseniz kullanıcılar, uygulamanızın sistem ayarlarındaki 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 göründüğünde kullanıcılar uygulamanızın adının yanındaki simgeyi görür.

Kullanıcılar bu simgeyi seçtiğinde uygulamanızın gerekçe etkinliği başlatılır.

Sağ üst köşede kamera ve mikrofon simgeleri içeren yuvarlak bir dikdörtgen
Şekil 2. Son veri erişimini gösteren mikrofon ve kamera göstergeleri

Göstergeler

Android 12 veya sonraki sürümleri çalıştıran cihazlarda, bir uygulama mikrofon veya 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 simgesini seçerek şu anda mikrofonu veya kamerayı hangi uygulamaların kullandığını görebilir. Şekil 2'de simgeleri içeren örnek bir ekran görüntüsü gösterilmektedir.

Göstergelerin ekrandaki konumunu belirleme

Uygulamanız tam ekran kullanıcı arayüzünü veya tam ekran modunu destekliyorsa göstergeler uygulamanızın kullanıcı arayüzüyle geçici olarak örtüşebilir. Sistem, kullanıcı arayüzünüzü bu göstergelere uyarlamanıza yardımcı olmak için 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

Hızlı ayar kutuları &quot;Kamera erişimi&quot; ve &quot;Mikrofon erişimi&quot; şeklinde etiketlenir.
Şekil 3. Hızlı Ayarlar'daki mikrofon ve kamera açma/kapatma düğmeleri

Android 12 veya sonraki sürümleri çalıştıran desteklenen cihazlarda kullanıcılar, tek bir açma/kapatma düğmesine basarak cihazdaki tüm uygulamalar için kamera ve mikrofon erişimini etkinleştirebilir ve devre dışı bırakabilir. Kullanıcılar, 3. resimde gösterildiği gibi Hızlı Ayarlar'dan veya sistem ayarlarındaki Gizlilik ekranından açma/kapatma seçeneklerine 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 feed'i alır.
  • Kullanıcı mikrofon erişimini devre dışı bıraktığında uygulamanız sessiz ses alır. Ayrıca, HIGH_SAMPLING_RATE_SENSORS iznini beyan edip etmediğinizden bağımsız olarak hareket sensörleri hız sınırlamasına tabidir.

Kullanıcı kameraya veya mikrofona erişimi kapattıktan sonra kamera ya da mikrofon bilgilerine erişmesi gereken bir uygulama 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österilen 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);