Önceki sürümlerde olduğu gibi Android 13'te de uygulamanızı etkileyebilecek davranış değişiklikleri yer alıyor. Aşağıdaki davranış değişiklikleri yalnızca Android 13 veya sonraki sürümleri hedefleyen uygulamalar için geçerlidir. Uygulamanız Android 13 veya sonraki sürümleri hedefliyorsa geçerli olduğu durumlarda uygulamanızı bu davranışları düzgün şekilde destekleyecek şekilde değiştirmeniz gerekir.
Android 13 üzerinde çalışan tüm uygulamaları etkileyen davranış değişikliklerinin listesini de incelemeyi unutmayın.
Gizlilik
Bildirim izni, ön plan hizmetinin görünümünü etkiler
Kullanıcı bildirim iznini reddederse bildirim çekmecesinde ön plan hizmetleriyle ilgili bildirimleri görmez. Ancak kullanıcılar, bildirim izninin verilip verilmediğinden bağımsız olarak Görev Yöneticisi'nde ön plan hizmetleriyle ilgili bildirimleri görmeye devam eder.
Yakındaki kablosuz cihazlar için yeni çalışma zamanı izni
Android'in önceki sürümlerinde, kullanıcının yaygın olarak kullanılan çeşitli kablosuz ağ kullanım alanlarını tamamlaması için uygulamanıza ACCESS_FINE_LOCATION
izin vermesi gerekir.
Kullanıcıların konum izinlerini kablosuz ağ işleviyle ilişkilendirmesi zor olduğundan Android 13 (API düzeyi 33), cihazın kablosuz ağ üzerinden yakınındaki erişim noktalarına olan bağlantılarını yöneten uygulamalar için NEARBY_DEVICES
izin grubunda bir çalışma anı izni sunar. Bu izin (NEARBY_WIFI_DEVICES
), aşağıdakiler gibi kablosuz ağ kullanım alanlarını karşılar:
- Yakındaki cihazları (ör. yazıcılar veya medya yayınlama cihazları) bulma veya bu cihazlara bağlanma
Bu iş akışı, uygulamanızın şu tür görevleri yerine getirmesini sağlar:
- AP bilgilerini bant dışı olarak (ör. BLE üzerinden) alma
- Kablosuz Ağ Farkındalığı üzerinden cihazları bulup bunlara bağlanabilir ve yalnızca yerel hotspot kullanarak bağlanabilirsiniz.
- Kablosuz Doğrudan Bağlantı üzerinden cihazları keşfedip bağlanın.
- Araba veya akıllı ev cihazı gibi bilinen bir SSID'ye bağlantı başlatma.
- Yalnızca yerel hotspot başlatın.
- Yakındaki kablosuz ağa duyarlı cihazların yanı sıra.
Uygulamanız kablosuz bağlantı API'lerinden fiziksel konum bilgisi almadığı sürece, Android 13 veya sonraki sürümleri hedefleyip kablosuz bağlantı API'lerini kullandığınızda ACCESS_FINE_LOCATION
yerine NEARBY_WIFI_DEVICES
isteyin. NEARBY_WIFI_DEVICES
iznini açıklarken uygulamanızın hiçbir zaman kablosuz ağ API'lerinden fiziksel konum bilgisi elde etmediğini kesin bir şekilde belirtin. Bunu yapmak için android:usesPermissionFlags
özelliğini neverForLocation
olarak ayarlayın. Bu işlem, Android 12 (API düzeyi 31) ve sonraki sürümlerde Bluetooth cihaz bilgilerinin konum için hiçbir zaman kullanılmadığını iddia ettiğinizde yaptığınıza benzer.
Yakındaki kablosuz cihazlara erişim izni isteme hakkında daha fazla bilgi edinin.
Ayrıntılı medya izinleri
READ_MEDIA_AUDIO
iznini istediğinizde kullanıcının gördüğü sistem izinleri iletişim kutusu.Uygulamanız Android 13 veya sonraki bir sürümü hedefliyorsa ve diğer uygulamaların oluşturduğu medya dosyalarına erişmesi gerekiyorsa READ_EXTERNAL_STORAGE
izni yerine aşağıdaki ayrıntılı medya izinlerinden bir veya daha fazlasını istemeniz gerekir:
Medya türü | İzin isteme |
---|---|
Resimler ve fotoğraflar | READ_MEDIA_IMAGES |
Videolar | READ_MEDIA_VIDEO |
Ses dosyaları | READ_MEDIA_AUDIO |
Başka bir uygulamanın medya dosyalarına erişmeden önce, kullanıcının uygulamanıza uygun ayrıntılı medya izinlerini verdiğinden emin olun.
Şekil 1'de READ_MEDIA_AUDIO
iznini isteyen bir uygulama gösterilmektedir.
Hem READ_MEDIA_IMAGES
iznini hem de READ_MEDIA_VIDEO
iznini aynı anda isterseniz yalnızca bir sistem izni iletişim kutusu gösterilir.
Uygulamanıza daha önce READ_EXTERNAL_STORAGE
izni verildiyse istenen tüm READ_MEDIA_*
izinleri yükseltme sırasında otomatik olarak verilir. Yükseltilen izinleri incelemek için aşağıdaki ADB komutunu kullanabilirsiniz:
adb shell cmd appops get --uid PACKAGE_NAME
Arka planda vücut sensörlerini kullanmak için yeni izin gerekiyor
Android 13, nabız, vücut ısısı ve kandaki oksijen yüzdesi gibi vücut sensörleri için "kullanımdayken" erişim kavramını kullanıma sunar. Bu erişim modeli, sistemin Android 10'da (API düzeyi 29) konum için kullanıma sunduğu modele çok benzer.
Uygulamanız Android 13'ü hedefliyorsa ve arka planda çalışırken vücut sensörü bilgilerine erişmesi gerekiyorsa mevcut BODY_SENSORS
iznine ek olarak yeni BODY_SENSORS_BACKGROUND
iznine de ihtiyacı vardır.
Performans ve pil
Pil Kaynağı Kullanımı
Uygulamanız Android 13'ü hedeflerken kullanıcı, uygulamanızı arka planda pil kullanımı için "kısıtlanmış" duruma yerleştirirse sistem, uygulama başka nedenlerle başlatılana kadar BOOT_COMPLETED
yayınını veya LOCKED_BOOT_COMPLETED
yayınını yayınlamaz.
Kullanıcı deneyimi
PlaybackState
kaynağından alınan medya kontrolleri
Sistem, Android 13 (API düzeyi 33) ve sonraki sürümleri hedefleyen uygulamalar için medya denetimlerini PlaybackState
işlemlerinden türetir. Bu sayede sistem, telefonlar ve tablet cihazlar arasında teknik olarak tutarlı olan ve ayrıca Android Auto ve Android TV gibi diğer Android platformlarında medya kontrollerinin nasıl oluşturulduğuyla uyumlu olan daha zengin bir kontrol grubu gösterebilir.
Şekil 2'de, bunun bir telefon ve tablette sırasıyla nasıl görüneceği gösterilmektedir.

Android 13'ten önce sistem, MediaStyle
bildirimdeki en fazla beş işlemi eklendikleri sırayla gösterirdi.
Kompakt modda (ör. daraltılmış hızlı ayarlarda) setShowActionsInCompactView()
ile belirtilen en fazla üç işlem gösteriliyordu.
Sistem, Android 13'ten itibaren aşağıdaki tabloda açıklandığı gibi PlaybackState
öğesini temel alan beş işlem düğmesi gösterir. Kompakt modda yalnızca ilk üç işlem yuvarı gösterilir. Sistem, Android 13'ü hedeflemeyen veya PlaybackState
içermeyen uygulamalar için kontrolleri, önceki paragrafta açıklandığı şekilde MediaStyle
bildirimine eklenen Action
listesine dayalı olarak gösterir.
Alan | İşlem | Ölçütler |
---|---|---|
1 | Oynat |
PlaybackState 'nin mevcut durumu aşağıdakilerden biridir:
|
Yükleme döner simgesi |
PlaybackState 'nin mevcut durumu aşağıdakilerden biridir:
|
|
Duraklat | PlaybackState bölgesinin mevcut eyaleti yukarıdakilerin hiçbirinden farklıdır. |
|
2 | Önceki | PlaybackState işlem ACTION_SKIP_TO_PREVIOUS içeriyor. |
Özel | PlaybackState işlemleri ACTION_SKIP_TO_PREVIOUS içermiyor ve PlaybackState özel işlemi henüz uygulanmamış bir özel işlem içeriyor. |
|
Boş | PlaybackState extras, SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV anahtarı için true boole değeri içerir. |
|
3 | Sonraki | PlaybackState işlemleri ACTION_SKIP_TO_NEXT içerir. |
Özel | PlaybackState işlemleri ACTION_SKIP_TO_NEXT içermiyor ve PlaybackState özel işlemi henüz uygulanmamış bir özel işlem içeriyor. |
|
Boş | PlaybackState ekstralar, SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT anahtarı için true boole değeri içerir. |
|
4 | Özel | PlaybackState özel işlemi henüz yerleştirilmemiş bir özel işlem içeriyor. |
5 | Özel | PlaybackState özel işlemi henüz yerleştirilmemiş bir özel işlem içeriyor. |
Özel işlemler, PlaybackState
'e eklendikleri sıraya göre yerleştirilir.
WebView içeriğine otomatik olarak uygulanan uygulama renk teması
Android 13 (API düzeyi 33) veya sonraki sürümleri hedefleyen uygulamalar için setForceDark()
yöntemi kullanımdan kaldırılmıştır. Bu durumda, yöntem çağrılırsa işlem yapılamaz.
Bunun yerine, WebView artık medya sorgusunu prefers-color-scheme
her zaman uygulamanın tema özelliğine (isLightTheme
) göre ayarlıyor. Diğer bir deyişle, isLightTheme
, true
ise veya belirtilmezse prefers-color-scheme
light
olur, aksi takdirde dark
olur. Bu davranış, web içeriğinin açık veya koyu stilinin, içerik desteklediği takdirde uygulamanın temasıyla eşleşmesi için otomatik olarak uygulandığı anlamına gelir.
Çoğu uygulamada yeni davranış, uygun uygulama stillerini otomatik olarak uygulamalıdır. Ancak karanlık mod ayarlarını manuel olarak kontrol etmiş olabileceğiniz durumları kontrol etmek için uygulamanızı test etmeniz gerekir.
Uygulamanızın renk teması davranışını özelleştirmeniz gerekiyorsa bunun yerine setAlgorithmicDarkeningAllowed()
yöntemini kullanın. Önceki Android sürümleriyle geriye dönük uyumluluk için AndroidX'te eşdeğer setAlgorithmicDarkeningAllowed()
yöntemini kullanmanızı öneririz.
Uygulamanızın targetSdkVersion
ve tema ayarlarına bağlı olarak uygulamanızda hangi davranışı bekleyebileceğiniz hakkında daha fazla bilgi edinmek için ilgili yöntemin dokümanlarına bakın.
Bağlantı
BluetoothAdapter#enable() ve BluetoothAdapter#disable() yöntemlerinin desteği sonlandırıldı
Android 13 (API düzeyi 33) veya sonraki sürümleri hedefleyen uygulamalar için BluetoothAdapter#enable()
ve BluetoothAdapter#disable()
yöntemleri kullanımdan kaldırılır ve her zaman false
sonucunu döndürür.
Aşağıdaki uygulama türleri bu değişikliklerden muaftır:
- Cihaz Sahibi uygulamaları
- Profil sahibi uygulamaları
- Sistem uygulamaları
Google Play hizmetleri
Reklam kimliği için izin gerekli
Google Play Hizmetleri reklam kimliğini kullanan ve Android 13 (API düzeyi 33) ve sonraki sürümleri hedefleyen uygulamalar, AD_ID
normal iznini uygulamalarının manifest dosyasında aşağıdaki gibi beyan etmelidir:
<manifest ...>
<!-- Required only if your app targets Android 13 or higher. -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<application ...>
...
</application>
</manifest>
Uygulamanız Android 13 veya sonraki sürümleri hedeflerken bu izni beyan etmezse reklam kimliği otomatik olarak kaldırılır ve sıfırlardan oluşan bir dizeyle değiştirilir.
Uygulamanız, kitaplığın manifest dosyasında AD_ID
iznini beyan eden SDK'lar kullanıyorsa izin, varsayılan olarak uygulamanızın manifest dosyasıyla birleştirilir. Bu durumda, uygulamanızın manifest dosyasında izni beyan etmeniz gerekmez.
Daha fazla bilgi için Play Console Yardım sayfasında Reklam Kimliği bölümüne bakın.
SDK dışı kısıtlamalar güncellendi
Android 13, Android geliştiricilerle yapılan ortak çalışmalara ve en son şirket içi testlere dayalı olarak kısıtlanmış SDK dışı arayüzlerin güncellenmiş listelerini içerir. Mümkün olduğunda, SDK olmayan arayüzleri kısıtlamadan önce herkese açık alternatiflerin kullanılabildiğinden emin oluruz.
Uygulamanız Android 13'ü hedeflemiyorsa bu değişikliklerden bazıları sizi hemen etkilemeyebilir. Ancak şu anda bazı SDK olmayan arayüzleri (uygulamanızın hedef API düzeyine bağlı olarak) kullanabilirsiniz. Ancak SDK olmayan herhangi bir yöntem veya alan kullanmak her zaman uygulamanızın bozulma riski taşır.
Uygulamanızın SDK olmayan arayüz kullanıp kullanmadığından emin değilseniz öğrenmek için uygulamanızı test edebilirsiniz. Uygulamanız SDK olmayan arayüzleri kullanıyorsa SDK alternatiflerine geçiş planlamaya başlamanız gerekir. Bununla birlikte, bazı uygulamaların SDK dışı arayüzler için geçerli kullanım alanları olduğunun farkındayız. Uygulamanızdaki bir özellik için SDK dışı arayüz kullanmanın alternatifini bulamıyorsanız yeni bir herkese açık API isteğinde bulunmanız gerekir.
Android'in bu sürümündeki değişiklikler hakkında daha fazla bilgi edinmek için Android 13'teki SDK dışı arayüz kısıtlamalarında yapılan güncellemeler başlıklı makaleyi inceleyin. SDK olmayan arayüzler hakkında genel olarak daha fazla bilgi edinmek için SDK dışı arayüzlerdeki kısıtlamalar bölümüne bakın.