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

Android 13, önceki sürümlerde olduğu gibi 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 sürümleri hedefliyorsa geçerli olduğu durumlarda bu davranışları düzgün şekilde desteklemek için uygulamanızı değiştirmeniz gerekir.

Android 13'te ç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 ön plan hizmetleriyle ilgili bildirimleri bildirim çekmecesinde 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 yeni çalışma zamanı izni

Android'in önceki sürümlerinde, kullanıcının birkaç yaygın kablosuz ağ kullanım alanını tamamlamak için uygulamanıza ACCESS_FINE_LOCATION izni vermesi gerekir.

Kullanıcıların konum izinlerini kablosuz işlevselliğiyle ilişkilendirmesi zor olduğundan Android 13 (API düzeyi 33), bir cihazın kablosuz ağ üzerinden yakındaki erişim noktalarıyla bağlantılarını yöneten uygulamalar için NEARBY_DEVICES izin grubunda bir çalışma zamanı 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 ya da bu cihazlara bağlanma Bu iş akışı, uygulamanızın aşağıdaki gibi görevleri gerçekleştirmesine olanak tanır:
    • AP bilgilerini bant dışı olarak (ör. BLE üzerinden) alma
    • Wi-Fi Aware üzerinden cihazları keşfedip bağlanma ve yalnızca yerel hotspot kullanarak bağlanma
    • Kablosuz Doğrudan Bağlantı üzerinden cihazları keşfedip bağlanma
  • Araba veya akıllı ev cihazı gibi bilinen bir SSID'ye bağlantı başlatma
  • Yalnızca yerel hotspot bağlantısı başlatın.
  • Yakındaki Wi-Fi Aware cihazlarının menzili.

Uygulamanız kablosuz API'lerinden fiziksel konum bilgisi elde etmediği sürece, Android 13 veya sonraki sürümleri hedefleyip kablosuz API'lerini kullanırken ACCESS_FINE_LOCATION yerine NEARBY_WIFI_DEVICES isteğinde bulunun. NEARBY_WIFI_DEVICES iznini beyan ederken uygulamanızın hiçbir zaman kablosuz 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ı onayladığınızda 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 kutusundaki iki düğme yukarıdan aşağıya doğru İzin ver ve İzin verme'dir.
1. şekil. Kullanıcının READ_MEDIA_AUDIO iznini istediğinizde 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ü İzin isteme 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 iznini 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 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 kandaki oksijen 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 Kaynak Kullanımı

Kullanıcı, uygulamanız Android 13'ü hedeflerken arka planda pil kullanımı için uygulamanızı "kısıtlanmış" durumuna getirirse uygulama başka nedenlerle başlatılana kadar sistem BOOT_COMPLETED yayınını veya LOCKED_BOOT_COMPLETED yayınını göndermez.

Kullanıcı deneyimi

PlaybackState kaynağından alınan medya denetimleri

Android 13 (API düzeyi 33) ve sonraki sürümleri hedefleyen uygulamalarda sistem, PlaybackState işlemlerinden medya kontrollerini türetir. Bu sayede sistem, telefon 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 da uyumlu olan daha zengin bir kontrol grubu gösterebilir.

Şekil 2'de, bunun sırasıyla telefonda ve tablette nasıl göründüğüne dair bir örnek gösterilmektedir.

Telefon ve tablet cihazlarda nasıl göründükleri açısından medya kontrolleri.
            Düğmelerin nasıl görünebileceğini gösteren örnek bir parça kullanılıyor.
Şekil 2: Telefon ve tablet cihazlarda medya kontrolleri

Android 13'ten önce sistem, MediaStyle bildirimindeki 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 temelinde en fazla beş işlem düğmesi gösterir. Kompakt modda yalnızca ilk üç işlem yuvası 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 öğesinin mevcut durumu aşağıdakilerden biridir:
  • STATE_NONE
  • STATE_STOPPED
  • STATE_PAUSED
  • STATE_ERROR
Yükleme döner simgesi PlaybackState öğesinin mevcut durumu aşağıdakilerden biridir:
  • STATE_CONNECTING
  • STATE_BUFFERING
Duraklat PlaybackState'ın mevcut durumu yukarıdakilerin hiçbiri değil.
2 Önceki PlaybackState işlemler ACTION_SKIP_TO_PREVIOUS içerir.
Özel PlaybackState işlemleri ACTION_SKIP_TO_PREVIOUS içermiyor ve PlaybackState özel işlemleri henüz yerleştirilmemiş bir özel işlem içeriyor.
Boş PlaybackState extras, SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV anahtarı için bir true boole değeri içerir.
3 Sonraki PlaybackState işlemler ACTION_SKIP_TO_NEXT içerir.
Özel PlaybackState işlemleri ACTION_SKIP_TO_NEXT içermiyor ve PlaybackState özel işlemleri henüz yerleştirilmemiş bir özel işlem içeriyor.
Boş PlaybackState extras, SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT anahtarı için bir true boole değeri içerir.
4 Özel PlaybackState Özel işlemler, henüz yerleştirilmemiş bir özel işlem içeriyor.
5 Özel PlaybackState Özel işlemler, henüz yerleştirilmemiş bir özel işlem içeriyor.

Özel işlemler, PlaybackState'ya eklendikleri sırayla 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 nedenle, yöntem çağrılırsa işlem yapılmaz.

Bunun yerine, WebView artık her zaman medya sorgusunu prefers-color-scheme uygulamanın tema özelliğine göre ayarlar, isLightTheme. Başka bir deyişle, isLightTheme true ise veya belirtilmemişse prefers-color-scheme light; aksi takdirde dark olur. Bu davranış, içerik destekliyorsa web içeriğinin açık veya koyu stilinin uygulamanın temasıyla eşleşecek şekilde otomatik olarak uygulanacağı anlamına gelir.

Yeni davranış, çoğu uygulamada uygun uygulama stillerini otomatik olarak uygulamalıdır. Ancak karanlık mod ayarlarını manuel olarak kontrol ettiğiniz durumları kontrol 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 ilgili yöntemin dokümanlarına 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 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 sahibinin 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) veya sonraki sürümleri hedefleyen uygulamaların, uygulama manifest dosyasında AD_ID normal iznini aşağıdaki şekilde 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 tanımlayan SDK'lar kullanıyorsa izin, varsayılan olarak uygulamanızın manifest dosyasıyla birleştirilir. Bu durumda, izni uygulamanızın manifest dosyasında beyan etmeniz gerekmez.

Daha fazla bilgi için Play Console Yardım Merkezi'ndeki Reklam Kimliği başlıklı makaleyi inceleyin.

SDK olmayan arayüzlerle ilgili güncellenen kısıtlamalar

Android 13, Android geliştiricilerle işbirliği ve en son dahili 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ılabilir olmasını sağlarız.

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

Uygulamanızda SDK dışı arayüzler kullanılıp kullanılmadığından emin değilseniz öğrenmek için uygulamanızı test edebilirsiniz. Uygulamanız SDK dışı 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 anlıyoruz. Uygulamanızdaki bir özellik için SDK dışı arayüz kullanmaya alternatif bulamıyorsanız yeni bir herkese açık API isteğinde bulunmalısınız.

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 daha fazla bilgi edinmek için SDK olmayan arayüzlerde kısıtlamalar başlıklı makaleyi inceleyin.