Davranış değişiklikleri: Android 13 veya sonraki bir sürümü hedefleyen uygulamalar

Önceki sürümlerde olduğu gibi Android 13 de uygulamanızı etkileyebilecek davranış değişikliklerini içerir. 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 bir sürümü hedefliyorsa uygun durumlarda bu davranışları destekleyecek şekilde uygulamanızda değişiklik yapmanız gerekir.

Android 13 üzerinde çalışan tüm uygulamaları etkileyen davranış değişiklikleri 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, bildirim izninin verilmiş olup olmadığına bakılmaksızın, kullanıcılar 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 bazı yaygın kablosuz bağlantı kullanım alanlarını tamamlamak için uygulamanıza ACCESS_FINE_LOCATION izni vermesi gerekir.

Kullanıcıların konum izinlerini kablosuz ağ işleviyle ilişkilendirmesi zor olduğundan, Android 13 (API düzeyi 33), cihazların yakındaki erişim noktalarıyla kablosuz ağ bağlantılarını yöneten uygulamalar için NEARBY_DEVICES izin grubuna bir çalışma zamanı izni ekler. Bu izin (NEARBY_WIFI_DEVICES), aşağıdakiler gibi kablosuz bağlantı kullanım alanlarını yerine getirir:

  • Yazıcı veya medya yayınlama cihazları gibi yakındaki cihazları bulabilir ya da bu cihazlara bağlanabilirsiniz. Bu iş akışı, uygulamanızın aşağıdaki gibi görevleri gerçekleştirmesine olanak tanır:
    • AP bilgilerini bant dışında (örneğin, BDE aracılığıyla) alabilirsiniz.
    • Cihazları Kablosuz Ağ Aware üzerinden keşfedip bağlanın ve yalnızca yerel hotspot kullanarak bağlanın.
    • Cihazları Kablosuz Doğrudan Bağlantı üzerinden keşfedip bağlanın.
  • Araba veya akıllı ev cihazı gibi bilinen bir SSID ile bağlantı başlatın.
  • Yalnızca yerel bir hotspot başlatın.
  • Yakındaki Wi-Fi duyarlı cihazlara kapsama alanı.

Uygulamanız, fiziksel konum bilgilerini kablosuz API'lerden almadığı sürece, Android 13 veya sonraki bir sürümü hedeflerken ve Wi-Fi API'lerini kullanırken ACCESS_FINE_LOCATION yerine NEARBY_WIFI_DEVICES isteyin. NEARBY_WIFI_DEVICES iznini beyan ederken uygulamanızın hiçbir zaman kablosuz API'lerden fiziksel konum bilgisi türetmediğini açıkça iddia edin. Bunun için android:usesPermissionFlags özelliğini neverForLocation olarak ayarlayın. Bu işlem, Bluetooth cihaz bilgilerinin konum için hiçbir zaman kullanılmadığını belirttiğinizde Android 12 (API düzeyi 31) ve sonraki sürümlerde yaptığınız işleme benzer.

Yakındaki kablosuz cihazlara erişim izni isteme hakkında daha fazla bilgi edinin.

Ayrıntılı medya izinleri

İletişim kutusunda yukarıdan aşağıya doğru iki düğme vardır: İzin ver ve İzin verme
Şekil 1. 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ı istemelisiniz:

Medya türü İstek izni
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ğini doğrulayın.

Şekil 1'de READ_MEDIA_AUDIO iznini isteyen bir uygulama gösterilmiştir.

Hem READ_MEDIA_IMAGES hem de READ_MEDIA_VIDEO iznini aynı anda isterseniz yalnızca bir sistem izni iletişim kutusu görünür.

Uygulamanıza daha önce READ_EXTERNAL_STORAGE izni verildiyse istenen tüm READ_MEDIA_* izinleri yeni sürüme geçerken otomatik olarak verilir. Yükseltilmiş izinleri incelemek için aşağıdaki ADB komutunu kullanabilirsiniz:

adb shell cmd appops get --uid PACKAGE_NAME

Vücut sensörlerini arka planda kullanmak için yeni izin gerekiyor

Android 13; nabız, sıcaklık ve kandaki oksijen yüzdesi gibi vücut sensörlerine "kullanımdayken" erişme kavramını kullanıma sunuyor. Bu erişim modeli, sistemin Android 10'da konum (API düzeyi 29) 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şim gerektiriyorsa mevcut BODY_SENSORS izninin yanı sıra yeni BODY_SENSORS_BACKGROUND iznini de beyan etmeniz gerekir.

Performans ve pil

Pil Kaynağı Kullanımı

Uygulamanız Android 13'ü hedeflerken kullanıcı uygulamanızı arka planda pil kullanımı nedeniyle "kısıtlanmış" duruma geçirirse sistem, uygulama başka nedenlerle başlatılana kadar BOOT_COMPLETED yayınını veya LOCKED_BOOT_COMPLETED yayınını teslim etmez.

Kullanıcı deneyimi

PlaybackState kaynağından elde edilen medya denetimleri

Sistem, Android 13 (API düzeyi 33) ve sonraki sürümleri hedefleyen uygulamalar için medya denetimlerini PlaybackState işlemlerinden türetir. Bu, sistemin telefonlar ve tablet cihazlar arasında teknik olarak tutarlı daha zengin bir kontrol grubu göstermesine de olanak tanır. Ayrıca, medya kontrollerinin Android Auto ve Android TV gibi diğer Android platformlarında oluşturulma şekliyle de uyumlu olur.

Şekil 2'de bu özelliğin bir telefonda ve tablet cihazda nasıl görüneceğine dair bir örnek verilmiştir.

Düğmelerin nasıl görüneceğini gösteren örnek bir kanal örneğine yer verilen örnek bir kanalla, telefon ve tablet cihazlarda nasıl göründükleri açısından medya kontrolleri
Şekil 2: Telefon ve tablet cihazlardaki medya kontrolleri

Android 13'ten önce sistem, MediaStyle bildirimlerindeki en fazla beş işlemi eklendikleri sırayla gösteriyordu. Kompakt modda (örneğin, daraltılmış hızlı ayarlarda) setShowActionsInCompactView() ile belirtilen en fazla üç işlem gösteriliyordu.

Android 13'ten itibaren sistem, aşağıdaki tabloda açıklandığı gibi PlaybackState ile ilgili en fazla beş işlem düğmesi gösterir. Kompakt modunda yalnızca ilk üç işlem alanı görüntülenir. Sistem, Android 13'ü hedeflemeyen veya PlaybackState içermeyen uygulamalarda, önceki paragrafta açıklandığı gibi, MediaStyle bildirimine eklenen Action listesine dayalı kontrolleri gösterir.

Yer İşlem Ölçütler
1 Oynat PlaybackState için mevcut eyalet aşağıdakilerden biridir:
  • STATE_NONE
  • STATE_STOPPED
  • STATE_PAUSED
  • STATE_ERROR
Yükleme döner simgesi PlaybackState için mevcut eyalet aşağıdakilerden biridir:
  • STATE_CONNECTING
  • STATE_BUFFERING
Duraklat PlaybackState öğesinin mevcut durumu yukarıdakilerin hiçbiri değil.
2 Önceki PlaybackState işlem şunları içeriyor: ACTION_SKIP_TO_PREVIOUS.
Özel PlaybackState işlem ACTION_SKIP_TO_PREVIOUS içermiyor. PlaybackState özel işlemi ise henüz yerleştirilmemiş bir özel işlem içeriyor.
Boş PlaybackState ekstralar, SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV anahtarı için true boole değeri içerir.
3 Sonraki PlaybackState işlem şunları içeriyor: ACTION_SKIP_TO_NEXT.
Özel PlaybackState işlem ACTION_SKIP_TO_NEXT içermiyor. PlaybackState özel işlemi ise henüz yerleştirilmemiş 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şlem henüz yerleştirilmemiş bir özel işlem içeriyor.
5 Özel PlaybackState özel işlem henüz yerleştirilmemiş bir özel işlem içeriyor.

Özel işlemler, PlaybackState öğesine eklendikleri sırayla yerleştirilir.

Uygulama renk teması, Web Görünümü içeriğine otomatik olarak uygulanır

Android 13 (API düzeyi 33) veya sonraki sürümleri hedefleyen uygulamalarda setForceDark() yönteminin desteği sonlandırılmıştır. Bu da yöntem çağrıldığında işlem yapılamamasına neden olur.

Bunun yerine, WebView artık prefers-color-scheme medya sorgusunu her zaman uygulamanın tema özelliğine (isLightTheme) göre ayarlıyor. Diğer bir deyişle, isLightTheme değeri true ise veya belirtilmemişse prefers-color-scheme light olur; aksi takdirde dark olur. Bu davranış, web içeriğinin açık veya koyu stilinin, uygulamanın temasıyla uyumlu olması için otomatik olarak uygulanacağı anlamına gelir (içerik destekliyorsa).

Yeni davranış, çoğu uygulama için uygun uygulama stillerini otomatik olarak uygulamalıdır. Ancak koyu mod ayarlarını manuel olarak kontrol ediyor olabileceğiniz durumları da kontrol etmek için uygulamanızı test etmelisiniz.

Uygulamanızın renk teması davranışını yine de ö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 ne tür davranışlar görebileceğiniz hakkında daha fazla bilgi edinmek için söz konusu yöntemle ilgili dokümanlara bakın.

Bağlantı

BluetoothAdapter#enable() ve BluetoothAdapter#disable() kullanımdan kaldı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ılmıştır ve her zaman false 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 gerekiyor

Google Play Hizmetleri reklam kimliğini kullanan ve Android 13 (API düzeyi 33) ve sonraki sürümleri hedefleyen uygulamalar, uygulamalarının manifest dosyasında AD_ID normal iznini aşağıdaki şekilde 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ık manifestinde AD_ID iznini tanımlayan 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ındaki Reklam Kimliği bölümüne bakın.

Güncellenen SDK dışı kısıtlamalar

Android 13, Android geliştiricileriyle yapılan ortak çalışmalara ve en son dahili testlere göre 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ılabilir olmasını sağlarız.

Uygulamanız Android 13'ü hedeflemiyorsa bu değişikliklerden bazıları sizi hemen etkilemeyebilir. Bununla birlikte, şu anda bazı SDK dışı arayüzleri (uygulamanızın hedef API düzeyine bağlı olarak) kullanabilseniz de herhangi bir SDK olmayan yöntemi veya alanı kullanmak her zaman uygulamanızın bozulma riskini artırır.

Uygulamanızın SDK olmayan arayüzler kullanıp kullanmadığından emin değilseniz öğrenmek için uygulamanızı test edebilirsiniz. Uygulamanız SDK olmayan arayüzlere dayanıyorsa SDK alternatiflerine geçiş planlamaya başlamanız gerekir. Yine de, bazı uygulamaların SDK dışı arayüz kullanımıyla ilgili geçerli kullanım alanları olduğunun farkındayız. Uygulamanızdaki bir özellik için SDK olmayan arayüz kullanmaya alternatif 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 bölümüne bakın. Genel olarak SDK olmayan arayüzler hakkında daha fazla bilgi edinmek için SDK dışı arayüzlerle ilgili kısıtlamalar bölümüne bakın.