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

Önceki sürümlerde olduğu gibi Android 13'te de uygulamanızı etkileyebilecek davranış değişiklikleri vardır. 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 uygun durumlarda bu davranışları doğru şekilde destekleyecek şekilde uygulamanızı değiştirmeniz gerekir.

Android 13'te çalışan tüm uygulamaları etkileyen davranış değişikliklerinin listesini de inceleyin.

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 izni verilip verilmediğine bakılmaksızın Görev Yöneticisi'nde ön plan hizmetleriyle ilgili bildirimleri görmeye devam eder.

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

Android'in önceki sürümlerinde, kullanıcının uygulamanıza ACCESS_FINE_LOCATION izni vermesi gerekir. Bu izin, yaygın olarak kullanılan çeşitli kablosuz ağ kullanım alanlarını tamamlamak için gereklidir.

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ındaki erişim noktalarına bağlantılarını yöneten uygulamalar için NEARBY_DEVICES izin grubunda çalışma zamanında istenen bir izin sunar. NEARBY_WIFI_DEVICES izni, aşağıdaki gibi kablosuz ağ kullanım alanlarını karşılar:

  • Yazıcılar veya medya yayınlama cihazları gibi yakındaki cihazları bulma ya da bunlara bağlanma Bu iş akışı, uygulamanızın aşağıdaki görevleri gerçekleştirmesine olanak tanır:
    • Erişim noktası bilgilerini bant dışından (ör. BLE üzerinden) alma
    • Wi-Fi Aware üzerinden cihazları keşfedin ve bunlara bağlanın, ayrıca yalnızca yerel hotspot kullanarak bağlanın.
    • Kablosuz Doğrudan Bağlantı üzerinden cihazları bulma ve onlara bağlanma.
  • Araba veya akıllı ev cihazı gibi bilinen bir SSID ile bağlantı başlatma
  • Yalnızca yerel bir hotspot başlatın.
  • Yakındaki Wi-Fi Aware cihazlara olan mesafe.

Uygulamanız, Wi-Fi API'lerinden fiziksel konum bilgisi almıyorsa Android 13 veya sonraki sürümleri hedefleyip Wi-Fi API'lerini kullanırken ACCESS_FINE_LOCATION yerine NEARBY_WIFI_DEVICES iznini isteyin. NEARBY_WIFI_DEVICES iznini beyan ettiğinizde uygulamanızın hiçbir zaman kablosuz API'lerden fiziksel konum bilgisi almadığını kesin bir şekilde belirtmiş olursunuz. 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 hiçbir zaman konum için kullanılmadığını beyan ettiğiniz işleme benzer.

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

Ayrıntılı medya izinleri

İletişim kutusunun iki düğmesi yukarıdan aşağıya doğru İzin ver ve İzin verme şeklindedir.
Ş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 sürümleri 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 birini veya daha fazlasını istemeniz gerekir:

Medya türü İstek gönderme izni
Görseller 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 izni isteyen bir uygulama gösterilmektedir.

Aynı anda hem READ_MEDIA_IMAGES hem de READ_MEDIA_VIDEO iznini isterseniz yalnızca bir sistem izni iletişim kutusu gösterilir.

Uygulamanıza daha önce READ_EXTERNAL_STORAGE izni verildiyse yükseltme sırasında istenen tüm READ_MEDIA_* izinleri otomatik olarak verilir. Yükseltilen izinleri incelemek için aşağıdaki ADB komutunu kullanabilirsiniz:

adb shell cmd appops get --uid PACKAGE_NAME

Vücut sensörlerinin arka planda kullanılması için yeni izin gerekiyor

Android 13, nabız, vücut ısısı ve kan oksijen doygunluğu yüzdesi gibi vücut sensörleri için "kullanımdayken" erişim kavramını sunar. Bu erişim modeli, sistemin Android 10'da (API düzeyi 29) konum için 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 iznini beyan etmeniz gerekir.

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 getirirse sistem, uygulama başka nedenlerle başlatılana kadar BOOT_COMPLETED yayını veya LOCKED_BOOT_COMPLETED yayını göndermez.

Kullanıcı deneyimi

PlaybackState uygulamasından alınan medya kontrolleri

Android 13 (API düzeyi 33) ve sonraki sürümleri hedefleyen uygulamalarda sistem, medya kontrollerini PlaybackState işlemlerinden alır. Bu sayede sistem, telefonlar ve tablet cihazlar arasında teknik olarak tutarlı olan ve medya kontrollerinin Android Auto ve Android TV gibi diğer Android platformlarında nasıl oluşturulduğuyla uyumlu olan daha zengin bir kontrol grubu gösterebilir.

Şekil 2'de, bunun bir telefon ve tablet cihazda nasıl göründüğüne dair bir örnek verilmiştir.

Telefon ve tablet cihazlarda görünen medya kontrolleri.
            Düğmelerin nasıl görünebileceğini gösteren örnek bir parça kullanılmıştır.
Şekil 2: Telefon ve tablet cihazlarda medya kontrolleri

Android 13'ten önce sistem, MediaStyle bildiriminden en fazla beş işlemi eklendikleri sırayla gösteriyordu. Kompakt modda (ör. 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 uyarınca en fazla beş işlem düğmesi gösterir. Kompakt modda yalnızca ilk üç işlem alanı gösterilir. Android 13'ü hedeflemeyen veya PlaybackState içermeyen uygulamalarda sistem, önceki paragrafta açıklandığı gibi MediaStyle bildirimine eklenen Action listesine göre kontrolleri gösterir.

Alan İşlem Ölçütler
1 Oynat PlaybackState için geçerli durum aşağıdakilerden biridir:
  • STATE_NONE
  • STATE_STOPPED
  • STATE_PAUSED
  • STATE_ERROR
Yükleme döner simgesi PlaybackState için geçerli durum aşağıdakilerden biridir:
  • STATE_CONNECTING
  • STATE_BUFFERING
Duraklat PlaybackState öğesinin mevcut durumu yukarıdakilerden hiçbiri değil.
2 Önceki PlaybackState işlem ACTION_SKIP_TO_PREVIOUS içeriyor.
Özel PlaybackState işlem ACTION_SKIP_TO_PREVIOUS içermiyor ve PlaybackState özel işlem henüz yerleştirilmemiş 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şlem ACTION_SKIP_TO_NEXT içeriyor.
Özel PlaybackState işlem ACTION_SKIP_TO_NEXT içermiyor ve PlaybackState özel işlem henüz yerleştirilmemiş bir özel işlem içeriyor.
Boş PlaybackState extras, 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 uygulamasına eklendikleri sıraya göre yerleştirilir.

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

Android 13 (API düzeyi 33) veya sonraki sürümleri hedefleyen uygulamalarda setForceDark() yöntemi kullanımdan kaldırılmıştır. Bu yöntem çağrılırsa işlem yapılmaz.

Bunun yerine WebView artık prefers-color-scheme medya sorgusunu her zaman uygulamanın tema özelliğine (isLightTheme) göre ayarlar. Başka bir deyişle, isLightTheme 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, içeriğin desteklemesi durumunda uygulamanın temasına uyacak şekilde otomatik olarak uygulandığı anlamına gelir.

Çoğu uygulamada yeni davranış, uygun uygulama stillerini otomatik olarak uygular. Ancak koyu mod ayarlarını manuel olarak kontrol ettiğiniz durumlar olup olmadığını 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 nasıl bir davranış bekleyebileceğiniz hakkında daha fazla bilgi edinmek için ilgili 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 uygulamalarda BluetoothAdapter#enable() ve BluetoothAdapter#disable() yöntemleri kullanımdan kaldırılmıştır ve her zaman false değerini 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ın, uygulama manifest dosyasında AD_ID normal iznini aşağıdaki gibi beyan etmesi gerekir:

<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ındaki Reklam Kimliği başlıklı makaleyi inceleyin.

SDK dışı kısıtlamalar güncellendi

Android 13, Android geliştiricileriyle yapılan ortak çalışmalar ve en son dahili testlere dayalı olarak güncellenmiş SDK dışı kısıtlanmış arayüz listeleri içerir. SDK olmayan arayüzleri kısıtlamadan önce mümkün olduğunca herkese açık alternatiflerin mevcut olduğundan emin oluruz.

Uygulamanız Android 13'ü hedeflemiyorsa bu değişikliklerin bazıları sizi hemen etkilemeyebilir. Ancak şu anda bazı SDK dışı arayüzleri kullanabilseniz de (uygulamanızın hedef API düzeyine bağlı olarak) SDK dışı bir yöntem veya alan kullanmak her zaman uygulamanızın bozulmasıyla ilgili yüksek risk taşır.

Uygulamanızın SDK dışı arayüzler kullanıp kullanmadığından emin değilseniz uygulamanızı test ederek öğrenebilirsiniz. Uygulamanız SDK olmayan arayüzleri kullanıyorsa SDK alternatiflerine geçişi planlamaya başlamanız gerekir. Bununla birlikte, bazı uygulamaların SDK dışı arayüzleri kullanmak için geçerli kullanım alanları olduğunu biliyoruz. 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 olmayan arayüzlerle ilgili kısıtlamalarda yapılan güncellemeler başlıklı makaleyi inceleyin. SDK olmayan arayüzler hakkında genel bilgi edinmek için SDK olmayan arayüzlerde kısıtlamalar başlıklı makaleyi inceleyin.