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şiklikleri 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 (geçerli olduğunda) uygulamanızı bu davranışları doğru ş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 bildirim görmez. Ancak kullanıcılar, bildirim izninin verilip verilmediğine bakılmaksızın Görev Yöneticisi'nde ön plan hizmetleriyle ilgili bildirimler görmeye devam eder.

Yakındaki kablosuz cihazlar için yeni çalışma zamanında istenen izin

Android'in önceki sürümlerinde, kullanıcının yaygın kablosuz ağ kullanım alanlarını tamamlaması için uygulamanıza ACCESS_FINE_LOCATION izni vermesi gerekiyor.

Kullanıcıların konum izinlerini kablosuz ağ işleviyle ilişkilendirmesi zor olduğundan Android 13 (API düzeyi 33), bir cihazın kablosuz ağ üzerinden yakındaki erişim noktalarıyla olan 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 ağ kullanım alanlarını karşılar:

  • Yazıcı veya medya yayınlama cihazları gibi yakındaki cihazları bulun veya bunlara bağlanın. Bu iş akışı, uygulamanızın şu tür görevleri yerine getirmesini sağlar:
    • AP bilgilerini bant dışında (örneğin, BDE aracılığıyla) alın.
    • Kablosuz Aware üzerinden cihazları keşfedip bağlanın ve yalnızca yerel hotspot üzerinden bağlanın.
    • Kablosuz Doğrudan Bağlantı üzerinden cihazları keşfedip bağlanma.
  • 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 kablosuz ağa duyarlı cihazların yanı sıra.

Uygulamanız, Wi-Fi API'lerinden fiziksel konum bilgisi elde etmediği sürece, Android 13 veya sonraki bir sürümü hedefleyip Wi-Fi API'lerini kullandığınızda ACCESS_FINE_LOCATION yerine NEARBY_WIFI_DEVICES isteğinde bulunun. NEARBY_WIFI_DEVICES iznini beyan ederken uygulamanızın Wi-Fi API'lerinden hiçbir zaman fiziksel konum bilgisi türetmediğini doğrulayın. Bunun için android:usesPermissionFlags özelliğini neverForLocation olarak ayarlayın. Bu işlem, Bluetooth cihaz bilgilerinin hiçbir zaman konum için kullanılmadığını belirttiğinizde Android 12 (API düzeyi 31) ve sonraki sürümlerde gerçekleştirilen işleme benzer.

Yakındaki kablosuz cihazlara erişim için izin isteme hakkında daha fazla bilgi edinin.

Ayrıntılı medya izinleri

İletişim kutusu için yukarıdan aşağıya doğru olan 2 düğme, İzin Ver ve İzin Ver şeklindedir.
Şekil 1. READ_MEDIA_AUDIO izni 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ü İsteme 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österilmektedir.

Aynı anda hem READ_MEDIA_IMAGES hem de READ_MEDIA_VIDEO iznini istediğinizde 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. Yeni sürüme geçirilen 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'te nabız, sıcaklık ve kandaki oksijen yüzdesi gibi vücut sensörlerine "kullanımdayken" erişim kavramı tanıtılmaktadır. Bu erişim modeli, sistemin Android 10'da konum (API düzeyi 29) için kullanıma sunduğu erişim modeline çok benzer.

Uygulamanız Android 13'ü hedefliyorsa ve arka planda çalışırken vücut sensörü bilgilerine erişim gerektiriyorsa mevcut BODY_SENSORS iznine ek olarak yeni BODY_SENSORS_BACKGROUND iznini de beyan etmeniz gerekir.

Performans ve pil

Pil Kaynağı Kullanımı

Kullanıcı, uygulamanız Android 13'ü hedeflerken uygulamanızı arka planda pil kullanımı için "kısıtlanmış" duruma getirirse 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 türetilen 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 da sistemin, telefonlar ve tablet cihazlar arasında teknik olarak tutarlı olan daha zengin bir kontrol grubu göstermesini ve medya denetimlerinin Android Auto ve Android TV gibi diğer Android platformlarındaki oluşturma şekliyle uyumlu olmasını sağlar.

Şekil 2'de, bunun bir telefon ve tablette sırasıyla nasıl görüneceği gösterilmektedir.

Düğmelerin nasıl görünebileceğini gösteren örnek bir kanal örneği kullanarak medyanın telefon ve tablet cihazlarında nasıl göründüğüyle ilgili kontroller
Şekil 2: Telefon ve tablet cihazlardaki medya kontrolleri

Android 13'ten önce sistem, MediaStyle bildiriminden beş işlemi eklenme sırasına göre gösteriyordu. Kompakt modda (örneğin, daraltılmış hızlı ayarlarda), setShowActionsInCompactView() ile belirtilen en fazla üç işlem gösterilir.

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 alanı görüntülenir. 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.

Yer İşlem Ölçütler
1 Çal PlaybackState bilgisinin mevcut eyaleti aşağıdakilerden biridir:
  • STATE_NONE
  • STATE_STOPPED
  • STATE_PAUSED
  • STATE_ERROR
Yükleme döner simgesi PlaybackState bilgisinin mevcut eyaleti aşağıdakilerden biridir:
  • STATE_CONNECTING
  • STATE_BUFFERING
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 ekstralar, SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV anahtarı için true boole değeri içerir.
3 Sonraki PlaybackState işlem ACTION_SKIP_TO_NEXT içeriyor.
Ö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 öğesine eklendikleri sıraya göre sıralanır.

Uygulama rengi teması, WebView içeriğine otomatik olarak uygulanır

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 destekliyorsa uygulamanın temasıyla eşleşecek şekilde otomatik olarak uygulandığı anlamına gelir.

Yeni davranışın çoğu uygulama için uygun uygulama stillerini otomatik olarak uygulaması gerekir. Ancak, koyu mod ayarlarını manuel olarak kontrol ediyor olabileceğiniz durumları tespit etmek için uygulamanızı test etmeniz gerekir.

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 hangi davranışları bekleyebileceğiniz hakkında daha fazla bilgi edinmek için söz konusu yöntemin belgelerine bakın.

Bağlantı

BluetoothAdapter#enable() ve BluetoothAdapter#disable() 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 gerekiyor

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 etmiyorsa 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ştiricileriyle yapılan ortak çalışmaya ve en son dahili testlere dayanarak kısıtlanmış SDK dışı arayüzlerin güncellenmiş listelerini içerir. Mümkün olduğunda SDK dışı 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 olmayan arayüz kısıtlamalarıyla ilgili güncellemeler bölümüne bakın. 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.