Android 10'daki gizlilik değişiklikleri

Android 10 (API düzeyi 29), kullanıcıların gizliliğini daha iyi korumak için bir dizi özellik ve davranış değişikliği sunar. Bu değişiklikler, kullanıcıların verileri ve uygulamalara verdikleri izinler üzerindeki şeffaflığı ve kontrolü artırır. Bu özellikler, uygulamanızın bağlı olduğu belirli davranışların veya verilerin platformun eski sürümlerine kıyasla farklı davranabileceği anlamına gelebilir. Uygulamanız, kullanıcı verilerini işlemeyle ilgili mevcut en iyi uygulamalara uyuyorsa bu değişikliklerden minimum düzeyde etkilenir.

Bu sayfada her değişikliğin özeti listelenir.

En önemli değişiklikler

Bu bölümde, Android 10'da gizlilikle ilgili yapılan önemli değişiklikler yer almaktadır.

Uygulama dosyaları ve medya ile sınırlı harici depolama alanı erişim kapsamı

Android 10 ve sonraki sürümleri hedefleyen uygulamalara varsayılan olarak harici depolama alanına kısıtlı erişim (kapsamlı depolama) verilir. Bu tür uygulamalar, depolama alanıyla ilgili herhangi bir kullanıcı izni istemeden harici depolama cihazındaki aşağıdaki dosya türlerini görebilir:

Kapsamlı depolama alanı ve harici depolama cihazlarına kaydedilen dosyaları paylaşma, bunlara erişme ve bunları değiştirme hakkında daha fazla bilgi edinmek için harici depolama alanındaki dosyaları yönetme ve medya dosyalarına erişme ve bunları değiştirme ile ilgili kılavuzları inceleyin.

Arka planda cihaz konumuna erişim için izin gerekiyor

Android 10, kullanıcıların bir uygulamanın konum bilgilerine erişimi üzerinde sahip olduğu ek kontrolü desteklemek için ACCESS_BACKGROUND_LOCATION iznini sunar.

ACCESS_FINE_LOCATION ve ACCESS_COARSE_LOCATION izinlerinin aksine ACCESS_BACKGROUND_LOCATION izni, yalnızca uygulama arka planda çalışırken konuma erişimini etkiler. Aşağıdaki koşullardan biri karşılanmadığı sürece uygulamanın arka planda konuma eriştiği kabul edilir:

  • Uygulamaya ait bir etkinlik görünür durumda.
  • Uygulama, location ön plan hizmet türü beyan eden bir ön plan hizmeti çalıştırıyor.

    Uygulamanızdaki bir hizmetin ön plan hizmet türünü beyan etmek için uygulamanızın targetSdkVersion veya compileSdkVersion değerini 29 ya da daha yüksek bir değere ayarlayın. Ön plan hizmetlerinin, konuma erişim gerektiren kullanıcı tarafından başlatılan işlemleri nasıl devam ettirebileceği hakkında daha fazla bilgi edinin.

Uygulamanız coğrafi sınırlar oluşturup izliyorsa ve Android 10 (API düzeyi 29) veya sonraki sürümleri hedefliyorsa ACCESS_BACKGROUND_LOCATION iznini beyan etmeniz gerekir.

Android 9 veya daha eski sürümler hedeflendiğinde erişim otomatik olarak verilir.

Uygulamanız Android 10 veya sonraki sürümlerde çalışıyor ancak Android 9 (API düzeyi 28) veya önceki sürümleri hedefliyorsa platform aşağıdaki davranışı uygular:

  • Uygulamanız ACCESS_FINE_LOCATION veya ACCESS_COARSE_LOCATION için bir <uses-permission> öğesi bildirirse sistem, yükleme sırasında ACCESS_BACKGROUND_LOCATION için otomatik olarak bir <uses-permission> öğesi ekler.
  • Uygulamanız ACCESS_FINE_LOCATION veya ACCESS_COARSE_LOCATION izni isterse sistem, isteğe otomatik olarak ACCESS_BACKGROUND_LOCATION iznini ekler.

Cihaz Android 10'a yükseltildiğinde erişim

Bir kullanıcı uygulamanıza cihaz konumuna erişim izni verirse (ACCESS_COARSE_LOCATION veya ACCESS_FINE_LOCATION) ve ardından cihazını Android 9'dan Android 10'a yükseltirse sistem, uygulamanıza verilen konuma dayalı izinleri otomatik olarak günceller. Uygulamanızın yükseltme işleminden sonra aldığı izinler, aşağıdaki tabloda gösterildiği gibi hedef SDK sürümüne ve tanımlanan izinlerine bağlıdır:

Tablo 1. Cihaz Android 10'a yükseltildikten sonra konum izni durumunda yapılan değişiklikler

Hedef platform sürümü Yaklaşık veya tam
konum izni verildi mi?
Arka plan izni
manifest dosyasında tanımlanmış mı?
Varsayılan izin durumu güncellendi
Android 10 Evet Evet Ön planda ve arka planda erişim
Android 10 Evet Hayır Yalnızca ön planda erişim
Android 10 Hayır (Sistem tarafından yoksayıldı) Erişim yok
Android 9 veya önceki sürümler Evet Cihaz yükseltme sırasında sistem tarafından otomatik olarak eklenir. Ön planda ve arka planda erişim
Android 9 veya önceki sürümler Hayır (Sistem tarafından yoksayıldı) Erişim yok

Sistem, uygulamanızın cihaz konumuna erişimini otomatik olarak güncelledikten sonra bile kullanıcının bu erişim düzeyini değiştirebileceğini unutmayın. Örneğin, kullanıcı uygulamanızın erişimini yalnızca ön planla sınırlayabilir veya erişimi tamamen iptal edebilir. Uygulamanız, özellikle ön plan hizmetinde cihazın konumuna erişmeye çalışmadan önce kullanıcının uygulamanızın bu konum bilgisini almasına hâlâ izin verip vermediğini kontrol etmelidir.

Android 10 cihazlarda hedef API düzeyi güncellenirken erişim iptal edilir

Uygulamanızın Android 10 çalıştıran bir cihaza zaten yüklü olduğunu varsayalım. Bu durumda uygulamanızı Android 10'u hedefleyecek şekilde güncellerseniz cihaz ACCESS_BACKGROUND_LOCATION iznini iptal eder.

Uygulamanız arka plandayken cihazın konumunu nasıl alacağınız hakkında daha fazla bilgi için periyodik konum güncellemelerini alma ile ilgili kılavuza bakın.

Arka planda etkinlik başlatmayla ilgili kısıtlamalar

Android 10'dan itibaren sistem, arka planda etkinlik başlatmaya kısıtlamalar getirir. Bu davranış değişikliği, kullanıcının kesintiye uğramasını en aza indirir ve kullanıcının ekranında gösterilenler üzerinde daha fazla kontrol sahibi olmasını sağlar. Uygulamanız, kullanıcı etkileşiminin doğrudan bir sonucu olarak etkinlik başlatıyorsa büyük olasılıkla bu kısıtlamalardan etkilenmez.

Arka plandan etkinlik başlatmaya alternatif olarak önerilen yöntem hakkında daha fazla bilgi edinmek için uygulamanızda kullanıcıları zamana duyarlı etkinlikler hakkında uyarma ile ilgili kılavuzu inceleyin.

Tanımlayıcılar ve veriler

Bu bölümde, cihaz tanımlayıcıları ve verileriyle çalışmaya özgü değişiklikler listelenmektedir.

Kişi yakınlığının kaldırılması

Android 10'dan itibaren platform, kişi yakınlığı bilgilerini takip etmez. Bu nedenle, uygulamanız kullanıcının kişilerinde arama yaparsa sonuçlar etkileşim sıklığına göre sıralanmaz.

ContactsProvider ile ilgili kılavuzda, Android 10'dan itibaren tüm cihazlarda kullanımdan kaldırılan alanları ve yöntemleri açıklayan bir bildirim yer alır.

MAC adresi rastgeleleştirme

Android 10 veya sonraki sürümleri çalıştıran cihazlarda sistem, varsayılan olarak rastgele MAC adresleri iletir.

Uygulamanız bir kurumsal kullanım alanını işliyorsa platform, MAC adresleriyle ilgili çeşitli işlemler için API'ler sağlar:

  • Rastgele MAC adresi alma: Cihaz sahibi uygulamaları ve profil sahibi uygulamaları, getRandomizedMacAddress() yöntemini çağırarak belirli bir ağa atanan rastgele MAC adresini alabilir.
  • Gerçek, fabrika MAC adresini alma: Cihaz sahibi uygulamaları, getWifiMacAddress() yöntemini çağırarak cihazın gerçek donanım MAC adresini alabilir. Bu yöntem, cihaz filolarını izlemek için kullanışlıdır.

/proc/net dosya sistemine erişim kısıtlaması

Android 10 veya sonraki sürümleri çalıştıran cihazlarda uygulamalar, cihazın ağ durumuyla ilgili bilgileri içeren /proc/net öğesine erişemez. VPN'ler gibi bu bilgilere erişmesi gereken uygulamalar NetworkStatsManager veya ConnectivityManager sınıfını kullanmalıdır.

Sıfırlanamayan cihaz tanımlayıcılarıyla ilgili kısıtlama

Android 10'dan itibaren, uygulamaların cihazın sıfırlanamayan tanımlayıcılarına (hem IMEI hem de seri numarası dahil) erişebilmesi için READ_PRIVILEGED_PHONE_STATE ayrıcalıklı iznine sahip olması gerekir.

Etkilenen yöntemler şunlardır:

Uygulamanızın izni yoksa ve sıfırlanamayan tanımlayıcılar hakkında bilgi istemeye çalışırsanız platformun yanıtı, hedef SDK sürümüne göre değişir:

  • Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa SecurityException hatası oluşur.
  • Uygulamanız Android 9 (API düzeyi 28) veya önceki sürümleri hedefliyorsa ve READ_PHONE_STATE iznine sahipse yöntem, null veya yer tutucu verileri döndürür. Aksi takdirde SecurityException hatası oluşur.

Birçok kullanım alanında sıfırlanamayan cihaz tanımlayıcıları gerekmez. Örneğin, uygulamanız reklam izleme veya kullanıcı analizi amacıyla sıfırlanamayan cihaz tanımlayıcıları kullanıyorsa bu özel kullanım alanları için Android reklam kimliği kullanın. Daha fazla bilgi edinmek için benzersiz tanımlayıcılarla ilgili en iyi uygulamalar başlıklı makaleyi inceleyin.

Pano verilerine sınırlı erişim

Uygulamanız varsayılan giriş yöntemi düzenleyicisi (IME) değilse veya şu anda odaklanılan uygulama değilse Android 10 ya da sonraki sürümlerde pano verilerine erişemez.

USB cihazı seri numarasının korunması

Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa kullanıcı, uygulamanıza USB cihazına veya aksesuarına erişim izni verene kadar uygulamanız seri numarasını okuyamaz.

USB cihazlarla çalışma hakkında daha fazla bilgi edinmek için USB ana makinelerini yapılandırma ile ilgili kılavuzu inceleyin.

Kamera ve bağlantı

Bu bölümde, kamera meta verilerine ve bağlantı API'lerine özgü değişiklikler listelenmektedir.

Kamera ayrıntılarına ve meta verilere erişim kısıtlaması

Android 10, getCameraCharacteristics() yönteminin varsayılan olarak döndürdüğü bilgilerin kapsamını değiştirir. Özellikle, uygulamanızın bu yöntemin dönüş değerine dahil edilen, cihaza özgü olabilecek meta verilere erişebilmesi için CAMERA iznine sahip olması gerekir.

Bu değişiklikler hakkında daha fazla bilgi edinmek için izin gerektiren kamera alanları ile ilgili bölüme bakın.

Kablosuz bağlantıyı etkinleştirme ve devre dışı bırakma kısıtlaması

Android 10 veya sonraki sürümleri hedefleyen uygulamalar kablosuz bağlantıyı etkinleştiremez veya devre dışı bırakamaz. WifiManager.setWifiEnabled() yöntemi her zaman false değerini döndürür.

Kullanıcılardan kablosuz bağlantıyı etkinleştirmelerini ve devre dışı bırakmalarını istemeniz gerekiyorsa ayarlar panelini kullanın.

Yapılandırılmış kablosuz ağlara doğrudan erişimle ilgili kısıtlamalar

Kullanıcı gizliliğini korumak için kablosuz ağ listesinin manuel olarak yapılandırılması, sistem uygulamaları ve cihaz politikası denetleyicileri (DPC'ler) ile kısıtlanmıştır. Belirli bir DPC, cihaz sahibi veya profil sahibi olabilir.

Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa ve sistem uygulaması ya da DPC değilse aşağıdaki yöntemler faydalı veriler döndürmez:

Uygulamanızın kablosuz ağlara bağlanması gerekiyorsa aşağıdaki alternatif yöntemleri kullanın:

Bazı telefon, Bluetooth ve kablosuz API'leri hassas konum izni gerektirir.

Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa kablosuz, Wi-Fi Aware veya Bluetooth API'lerindeki çeşitli yöntemleri kullanabilmek için ACCESS_FINE_LOCATION iznine sahip olmalıdır. Aşağıdaki bölümlerde, etkilenen sınıflar ve yöntemler listelenmiştir.

Telefon

Kablosuz bağlantı

Bluetooth

İzinler

Bu bölümde, Android izin modelindeki güncellemeler açıklanmaktadır.

Ekran içeriklerine kısıtlı erişim

Android 10, kullanıcıların ekran içeriklerini korumak için READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT ve CAPTURE_SECURE_VIDEO_OUTPUT izinlerinin kapsamını değiştirerek cihazın ekran içeriklerine sessiz erişimi engeller. Android 10'dan itibaren bu izinler yalnızca imza erişimi ile kullanılabilir.

Cihazın ekran içeriklerine erişmesi gereken uygulamalar, kullanıcıdan izin isteyen bir istem gösteren MediaProjection API'sini kullanmalıdır.

Eski uygulamalarda kullanıcılara yönelik izin kontrolü

Uygulamanız Android 5.1 (API düzeyi 22) veya daha eski bir sürümü hedefliyorsa kullanıcılar, uygulamanızı Android 10 veya sonraki bir sürümü çalıştıran bir cihazda ilk kez kullanırken Şekil 1'de gösterildiği gibi bir izin ekranı görür. Bu ekran, kullanıcılara sistemin daha önce yükleme sırasında uygulamanıza verdiği izinlere erişimi iptal etme fırsatı sunar.

İletişim kutusunun ekran görüntüsü
Şekil 1. Eski izinlerin incelenmesine olanak tanıyan, kullanıcılara yönelik iletişim kutusu

Fiziksel aktivite tanıma

Android 10, kullanıcının adım sayısını algılaması veya kullanıcının fiziksel aktivitesini (ör. yürüme, bisiklete binme veya araçta hareket etme) sınıflandırması gereken uygulamalar için android.permission.ACTIVITY_RECOGNITION çalışma zamanında istenen iznini sunar. Bu, kullanıcılara cihaz sensör verilerinin Ayarlar'da nasıl kullanıldığını göstermek için tasarlanmıştır.

Google Play Hizmetleri'ndeki Activity Recognition API ve Google Fit API gibi bazı kitaplıklar, kullanıcı uygulamanıza bu izni vermediği sürece sonuç sağlamaz.

Cihazda bu izni beyan etmenizi gerektiren tek yerleşik sensörler, adım sayar ve adım algılayıcı sensörleridir.

Uygulamanız Android 9 (API düzeyi 28) veya daha eski bir sürümü hedefliyorsa ve aşağıdaki koşulların her birini karşılıyorsa sistem, uygulamanıza gerektiğinde android.permission.ACTIVITY_RECOGNITION iznini otomatik olarak verir:

  • Manifest dosyasında com.google.android.gms.permission.ACTIVITY_RECOGNITION izni yer alıyor.
  • Manifest dosyanızda android.permission.ACTIVITY_RECOGNITION izni bulunmuyor.

Sistem, android.permission.ACTIVITY_RECOGNITION iznini otomatik olarak verirse uygulamanızı Android 10'u hedefleyecek şekilde güncelledikten sonra uygulamanız bu izni korur. Ancak kullanıcı, sistem ayarlarından bu izni istediği zaman iptal edebilir.

İzin grupları kullanıcı arayüzünden kaldırıldı

Android 10'dan itibaren uygulamalar, kullanıcı arayüzünde izinlerin nasıl gruplandırıldığını arayamaz.