Android 10'daki gizlilikle ilgili değişiklikler

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 sağladıkları özellikler üzerinde sahip oldukları ş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 yönetmek için mevcut en iyi uygulamaları izliyorsa bu durumun uygulamanız üzerindeki etkileri minimum düzeyde olacaktır.

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

En iyi değişiklikler

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

Uygulama dosyaları ve medyaları kapsamındaki harici depolama erişimi

Varsayılan olarak, Android 10 ve sonraki sürümleri hedefleyen uygulamalara harici depolamaya kapsamlı erişim veya kapsamlı depolama verilir. Bu tür uygulamalar, harici bir depolama cihazında, depolamayla ilgili kullanıcı izinleri istemeden aşağıdaki dosya türlerini görebilir:

Kapsamlı depolamanın yanı sıra harici depolama cihazlarına kaydedilen dosyaları paylaşma, değiştirme ve bu dosyalara erişme 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 kılavuzlarına göz atın.

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

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

ACCESS_FINE_LOCATION ve ACCESS_COARSE_LOCATION izinlerinden farklı olarak ACCESS_BACKGROUND_LOCATION izni, bir uygulamanın arka planda çalıştığı konuma yalnızca konum erişimini etkiler. Aşağıdaki koşullardan biri sağlanmadığı sürece, uygulama arka planda konuma erişiyor olarak kabul edilir:

  • Uygulamaya ait etkinlikler görünür durumda.
  • Uygulama, ön plan hizmet türünü location olarak tanımlayan bir ön plan hizmeti çalıştırıyor.

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

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

Android 9 veya önceki sürümler hedeflenirken erişim otomatik olarak verildi

Uygulamanız Android 10 veya sonraki bir sürümde çalışıyor ancak Android 9 (API düzeyi 28) veya altını hedefliyorsa platform aşağıdaki davranışı uygular:

  • Uygulamanız ACCESS_FINE_LOCATION veya ACCESS_COARSE_LOCATION için bir <uses-permission> öğesi tanımlarsa 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 için istekte bulunursa sistem, isteğe otomatik olarak ACCESS_BACKGROUND_LOCATION ekler.

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

Bir kullanıcı, ACCESS_COARSE_LOCATION veya ACCESS_FINE_LOCATION olarak uygulamanıza cihaz konumuna erişim izni verirse ardından cihazını Android 9'dan Android 10'a yükseltirse sistem, uygulamanıza verilen konuma dayalı izin grubunu otomatik olarak günceller. Yeni sürüme geçişten sonra uygulamanızın alacağı izin grubu, aşağıdaki tabloda gösterildiği gibi, uygulamanın hedef SDK sürümüne ve tanımlanmış izinlere bağlıdır:

Tablo 1. Cihaz Android 10'a yükseltildikten sonra konum izni durumundaki değişiklikler

Hedef platform sürümü Genel veya hassas
izin verildi mi?
Manifest'te arka plan izni
tanımlanıyor mu?
Varsayılan izin durumu güncellendi
Android 10 Evet Evet Ön plan ve arka plan erişimi
Android 10 Evet Hayır Yalnızca ön plan erişimi
Android 10 Hayır (Sistem tarafından yok sayıldı) Erişim yok
Android 9 veya önceki sürümler Evet Cihaz yeni sürüme geçirildiğinde sistem tarafından otomatik olarak eklenir Ön plan ve arka plan erişimi
Android 9 veya önceki sürümler Hayır (Sistem tarafından yok sayıldı) Erişim yok

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

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

Uygulamanızın Android 10 çalıştıran bir cihazda zaten yüklü olduğu durumu düşünün. 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 düzenli konum güncellemelerini alma rehberine bakın.

Aktiviteleri arka planda başlatmayla ilgili kısıtlamalar

Android 10'dan itibaren sistem, etkinlikleri arka plandan başlatmaya kısıtlamalar getirir. Bu davranış değişikliği, kullanıcı için kesintileri en aza indirmeye yardımcı olur ve ekranda gösterilenler üzerinde kullanıcının daha fazla kontrol sahibi olmasını sağlar. Uygulamanız doğrudan kullanıcı etkileşiminin bir sonucu olarak etkinlik başlattığı sürece, uygulamanız muhtemelen bu kısıtlamalardan etkilenmez.

Aktiviteleri arka planda başlatmaya ilişkin önerilen alternatif hakkında daha fazla bilgi edinmek için uygulamanızdaki zamana duyarlı etkinlikler konusunda kullanıcıları nasıl uyaracağınızla ilgili kılavuza bakın.

Tanımlayıcılar ve veriler

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

Kişilerle yakın ilgi alanını kaldırma

Android 10'dan itibaren platform, kişilerin yakın ilgi alanı bilgilerini takip etmemektedir. Sonuç olarak, uygulamanız kullanıcının kişileri üzerinde bir arama yaparsa sonuçlar etkileşim sıklığına göre sıralanmaz.

ContactsProvider hakkındaki kılavuz, Android 10'dan başlayarak tüm cihazlarda geçerli olmayan belirli alanlar ve yöntemlerin açıklandığı bir bildirim içerir.

MAC adresi rastgele hale getirme

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

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

  • Rastgele MAC adresi edinme: 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() çağrısı yaparak cihazın gerçek donanım MAC adresini alabilir. Bu yöntem, cihaz filolarını izlemek için yararlı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 de içeren /proc/net özelliğine erişemez. Bu bilgilere erişmesi gereken uygulamalar (ör. VPN'ler) NetworkStatsManager veya ConnectivityManager sınıfını kullanmalıdır.

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

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

Bu durumdan etkilenen yöntemler şunlardır:

Uygulamanız bu izne sahip değilse ve yine de sıfırlanamayan tanımlayıcılar hakkında bilgi istemeyi denerseniz platformun yanıtı, hedef SDK sürümüne göre değişir:

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

Birçok kullanım alanında, sıfırlanamayan cihaz tanımlayıcılarına gerek yoktur. Örneğin, uygulamanız reklam izleme veya kullanıcı analizi için sıfırlanamayan cihaz tanımlayıcıları kullanıyorsa söz konusu kullanım alanları için bunun yerine bir Android Reklam Kimliği kullanın. Daha fazla bilgi edinmek için benzersiz tanımlayıcılarla ilgili en iyi uygulamalara bakın.

Pano verilerine sınırlı erişim

Uygulamanız varsayılan giriş yöntemi düzenleyici (IME) değilse veya şu anda odak noktasına sahip değilse, Android 10 veya sonraki sürümlerde pano verilerine erişemez.

USB cihazı seri numarası koruma

Uygulamanız Android 10 veya sonraki bir sürümü hedefliyorsa kullanıcı, uygulamanıza USB cihaza veya aksesuara erişme izni verene kadar uygulamanız seri numarasını okuyamaz.

USB cihazlarıyla çalışma hakkında daha fazla bilgi edinmek için USB ana makinelerinin nasıl yapılandırılacağına ilişkin kılavuza bakın.

Kamera ve bağlantı

Bu bölümde, kamera meta verileri 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üğü bilgi genişliğini değiştirir. Özellikle, bu yöntemin döndürülen değerinde bulunan, cihaza özel olabilecek meta verilere erişmek için uygulamanızın CAMERA iznine sahip olması gerekir.

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

Kablosuz bağlantıyı etkinleştirme ve devre dışı bırakmayla ilgili kısıtlama

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 bir ayarlar panelini kullanın.

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

Kullanıcı gizliliğini korumak amacıyla, kablosuz ağ listesinin manuel yapılandırması sistem uygulamaları ve cihaz politikası denetleyicileri (DPC'ler) ile sınırlıdır. Belirli bir DPC, cihaz sahibi veya profil sahibi olabilir.

Uygulamanız Android 10 veya sonraki bir sürümü hedefliyorsa ve bir sistem uygulaması ya da DPC değilse aşağıdaki yöntemler yararlı 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 ağ API'leri için DAHA İYİ konum izni gerekir

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

Telefon Hizmeti

Kablosuz ağlar

Bluetooth

İzinler

Bu bölümde, Android izin modelinde yapılan 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 sürümünden itibaren bu izinler yalnızca imza erişimiyle kullanılabilir.

Cihazın ekranındaki içeriklere erişmesi gereken uygulamalar MediaProjection API'sini kullanmalıdır. Bu API, kullanıcıdan izin vermesini isteyen bir istem görüntüler.

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

Uygulamanız Android 5.1 (API düzeyi 22) veya önceki sürümleri 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 izinler ekranı görürler. Bu ekran kullanıcılara, yükleme sırasında daha önce sistemin 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ıya yönelik iletişim kutusu

Fiziksel aktivite tanıma

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

Google Play hizmetlerindeki Activity Recognition API ve Google Fit API gibi bazı kitaplıklar, kullanıcı uygulamanıza bu izni vermedikçe sonuç sağlamaz.

Cihazda bu izni beyan etmenizi gerektiren tek yerleşik sensör, adım sayacı ve adım algılayıcı sensörlerdir.

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

  • Manifest dosyası com.google.android.gms.permission.ACTIVITY_RECOGNITION iznini içerir.
  • Manifest dosyası android.permission.ACTIVITY_RECOGNITION iznini içermez.

Sistem, android.permission.ACTIVITY_RECOGNITION iznini otomatik olarak verirse Android 10'u hedefleyecek şekilde güncellemenizden sonra uygulamanız bu izni korur. Ancak kullanıcı istediği zaman sistem ayarlarından bu izni 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ı görememektedir.