Android 10'daki gizlilik değişiklikleri

Android 10 (API düzeyi 29), kullanıcı 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ık 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ı şekilde çalışabileceği anlamına gelebilir. Uygulamanız, kullanıcı verilerini işleme konusunda mevcut en iyi uygulamalara uyuyorsa uygulamanız üzerindeki etkiler minimum düzeyde olmalıdır.

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

En önemli değişiklikler

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

Harici depolama alanına erişim, uygulama dosyaları ve medyayla sınırlandırıldı

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

Kapsamlı depolama ve harici depolama cihazlarına kaydedilen dosyaları paylaşma, bu dosyalara erişme ve bunları değiştirme hakkında daha fazla bilgi edinmek için harici depolamadaki dosyaları yönetme ve medya dosyalarına erişme ve bunları değiştirme ile ilgili kılavuzlara göz atın.

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

Android 10, kullanıcıların bir uygulamanın konum bilgisine erişimi üzerinde daha fazla kontrol sahibi olmasını sağlamak için ACCESS_BACKGROUND_LOCATION iznini kullanıma sunar.

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

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

    Uygulamanızdaki bir hizmet için ön plan hizmeti türünü bildirmek üzere uygulamanızın targetSdkVersion veya compileSdkVersion değerini 29 ya da daha yüksek bir değere ayarlayın. Konuma erişim gerektiren kullanıcı tarafından başlatılan işlemlerin ön plan hizmetleri tarafından nasıl devam ettirilebileceğ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 önceki sürümler hedeflenirken erişim otomatik olarak verilir

Uygulamanız Android 10 veya sonraki sürümlerde çalışıyor ancak Android 9'u (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 beyan ediyorsa 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 cihazını Android 9'dan Android 10'a yükseltirse sistem, uygulamanıza verilen konum tabanlı izinler grubunu otomatik olarak günceller. Yükseltme işleminden sonra uygulamanızın aldığı izinler grubu, hedef SDK sürümüne ve tanımlanan izinlerine bağlıdır. Bu bilgiler aşağıdaki tabloda gösterilmiştir:

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

Hedef platform sürümü Kaba veya ayrıntılı
izin mi verildi?
Bildiride arka plan izni
tanımlanmış mı?
Güncellenen varsayılan izin durumu
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ılır) 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ılır) Erişim yok

Kullanıcının, sistem uygulamanızın cihaz konumuna erişimini otomatik olarak güncelledikten sonra bile 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 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şimin iptal edilmesi

Uygulamanızın Android 10 çalıştıran bir cihaza zaten yüklendiğini 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 alma hakkında daha fazla bilgi için Periyodik konum güncellemeleri alma rehberine bakın.

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

Android 10'dan itibaren sistem, arka planda etkinlik başlatma konusunda kısıtlamalar uygular. Bu davranış değişikliği, kullanıcının kesintiye uğramasını en aza indirir ve ekranda gösterilen içerikler üzerinde daha fazla kontrol sahibi olmasını sağlar. Uygulamanız, kullanıcı etkileşiminin doğrudan sonucu olarak etkinlik başlatıyorsa bu kısıtlamalardan etkilenmez.

Etkinlikleri arka plandan başlatmanın önerilen alternatifi hakkında daha fazla bilgi edinmek için uygulamanızda zamana duyarlı etkinlikler hakkında kullanıcıları uyarma konusundaki kılavuza bakın.

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ığı özelliğinin kaldırılması

Android 10'dan itibaren platform, kişilerin yakınlık bilgilerini takip etmez. Bu nedenle, uygulamanız kullanıcının kişileri arasında 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 belirli alanları ve yöntemleri açıklayan bir bildirim yer almaktadır.

MAC adresi rastgele seçimi

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ını ele alıyorsa 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() çağrısı yaparak belirli bir ağa atanmış rastgele MAC adresini alabilir.
  • Gerçek fabrika MAC adresini alma: Cihaz sahibi uygulamaları, getWifiMacAddress() işlevini ç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ümlerin yüklü olduğu 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, IMEI ve seri numarası da dahil olmak üzere cihazın sıfırlanamayan tanımlayıcılarına erişebilmesi için READ_PRIVILEGED_PHONE_STATE ayrıcalıklı iznine sahip olması gerekir.

Etkilenen yöntemler şunlardır:

Uygulamanızda izin yoksa ve yine de 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 oluşur.
  • Uygulamanız Android 9'u (API düzeyi 28) veya daha eski bir sürümü hedefliyorsa ve READ_PHONE_STATE iznine sahipse yöntem null veya yer tutucu veriler 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 amacıyla sıfırlanamayan cihaz tanımlayıcıları kullanıyorsa bu özel kullanım alanları için Android reklam kimliğini 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ılmış uygulama değilse Android 10 ya da sonraki sürümlerdeki 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 ya da 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 hakkındaki kılavuza bakın.

Kamera ve bağlantı

Bu bölümde, kamera meta verileri ve bağlantı API'leriyle ilgili 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, bu yöntemin dönüş değerine dahil edilen, 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ı bölümüne bakın.

Kablosuz'u 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 ya da 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 paneli kullanın.

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

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

Uygulamanız Android 10 veya sonraki sürümleri 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 KESİN konum izni gerektirir

Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa Kablosuz, Wi-Fi Aware ya da Bluetooth API'lerindeki çeşitli yöntemleri kullanmak 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 Hizmeti

Kablosuz bağlantı

Bluetooth

İzinler

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

Ekran içeriğine erişim kısıtlandı

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 içindir.

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

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

Uygulamanız Android 5.1'i (API düzeyi 22) veya daha eski bir sürümü hedefliyorsa kullanıcılar, Android 10 veya daha yeni bir sürümün yüklü olduğu cihazda uygulamanızı 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ü
1. şekil 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 kullanıcının fiziksel aktivitesini (ör. yürüme, bisiklete binme veya araçla hareket etme) sınıflandırması gereken uygulamalar için android.permission.ACTIVITY_RECOGNITION çalışma zamanı iznini kullanıma sunar. Bu özellik, kullanıcılara cihaz sensörü verilerinin Ayarlar'da nasıl kullanıldığı konusunda görünürlük sağlamak için tasarlanmıştır.

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

Bu izni bildirmenizi gerektiren cihazdaki tek yerleşik sensörler, adım sayacı ve adım algılayıcı sensörleridir.

Uygulamanız Android 9'u (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, gerektiğinde uygulamanıza android.permission.ACTIVITY_RECOGNITION iznini otomatik olarak verir:

  • Manifest dosyasında com.google.android.gms.permission.ACTIVITY_RECOGNITION izni yer alıyor.
  • Manifest dosyası iznini içermiyor.android.permission.ACTIVITY_RECOGNITION

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