Bu sayfada, Android 11'de (API düzeyi 30) uyumluluk çerçevesine eklenen, uygulamayı etkileyen her bir davranış değişikliği açıklanmaktadır. Android 11'i hedeflemeye hazırlanırken uygulamanızı test etmek ve hata ayıklamak için bu listeyi geliştirici seçenekleri ve ADB komutları ile birlikte kullanın.
ADD_CONTENT_OBSERVER_FLAGS
Değişiklik Kimliği: 150939131
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar için, flags
tamsayı bağımsız değişkenini içeren yeni bir genel API aşırı yükü onChange(boolean, Uri, int)
bulunmaktadır.
Bu yeni yöntem, userId
tamsayı bağımsız değişkeni içeren ve SDK olmayan onChange()
aşırı yükleme yöntemini kullanan uygulamalar için genel bir SDK alternatifidir.
YÖNETİCİ_UYGULAMA_ŞİFRESİ_KARŞILAŞTIRMA
Değişiklik Kimliği: 123562444
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen yönetici uygulamaları için, bir uygulama atanmış durumdaki şifrenin kalitesiyle alakalı olmayan bir şifre gereksinimi ayarladığında hata verin. Örneğin, şifre kalitesi DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
olarak ayarlandığında uygulama minimum şifre uzunluğu belirleyemez. Bu durumda, minimum şifre uzunluğunu ayarlamaya çalışmadan önce uygulamanın setPasswordQuality()
yöntemini ve ancak daha sonra setPasswordMinimumLength()
yöntemini çağırması gerekir.
Ayrıca, Android 11'i hedefleyen bir yönetici uygulaması şifre kalitesini düşürdüğünde artık geçerli olmayan mevcut şifre gereksinimleri varsayılan değerlerine sıfırlanır.
APP_DATA_DIRECTORY_ISOLATION
Değişiklik Kimliği: 143937733
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar, diğer uygulamanın hedef SDK sürümü ne olursa olsun, hiçbir uygulamanın özel veri dizinlerindeki dosyalara artık erişemeyecek.
Daha fazla bilgi edinmek için Özel dizinlere erişim bölümüne bakın.
APN_READING_PERMISSION_CHANGE_ID
Değişiklik Kimliği: 124107808
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar için APN veritabanına erişmek için artık Manifest.permission.WRITE_APN_SETTINGS
izni gereklidir.
Bu değişiklik hakkında daha fazla bilgi edinmek için APN veritabanına kısıtlı okuma erişimi sayfasını inceleyin.
BACKGROUND_RATIONALE_CHANGE_ID
Değişiklik Kimliği: 147316723
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Uygulamalar artık arka planda cihazın konumuna erişmek için her istekte bulunduklarında geçerli bir gerekçe sunmalıdır.
Bu değişiklik hakkında daha fazla bilgi edinmek için Android 11'de konumla ilgili gizlilik değişikliklerini ele alan Android 11'de arka planda konuma erişme kılavuzuna bakın.
CALLBACK_ON_CLEAR_CHANGE
Değişiklik Kimliği: 119147584
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Artık Editor.clear
çağrıldığında, null
anahtarıyla OnSharedPreferenceChangeListener.onSharedPreferenceChanged
'e geri arama yapılıyor.
Bu değişiklik hakkında daha fazla bilgi edinmek için OnSharedPreferenceChangeListener için geri arama değişiklikleri bölümüne bakın.
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
Değişiklik Kimliği: 130595455
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
updateAvailableNetworks(List,
Executor,
Consumer)
ve setPreferredOpportunisticDataSubscription(int, boolean, Executor,
Consumer)
için hata kodları genişletildi.
CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
Değişiklik Kimliği: 148180766
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Bu, startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
ile ilgili küçük bir davranış değişikliğidir.
Bu değişiklikten önce, sistem değiştirilen işlem için geri çağrılır. Değişiklikten sonra, hiçbir işlem belirtilmezse sistem gerçekten istenen işlem veya tüm geçiş yapılan işlemler için geri arar.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
Değişiklik Kimliği: 136219221
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalarda, ön plan hizmetleri yalnızca kullanım sırasında kamera ve mikrofon özelliklerini alırken R.attr.foregroundServiceType
manifest dosyasında sırasıyla ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
ve ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
olarak yapılandırıldığında kullanılabilir. Android'in önceki sürümlerinde ön plan hizmetlerine otomatik olarak kamera ve mikrofon özellikleri geliyordu.
Bu değişiklik hakkında daha fazla bilgi edinmek için Android 11'de ön plan hizmeti türleri bölümüne bakın.
CHANGE_BACKGROUND_CUSTOM_TOAST_ENGELLE
Değişiklik Kimliği: 128611929
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Uygulamalar artık arka planda özel durum mesajı yayınlayamaz. Ancak uygulamalar arka plandayken Toast.makeText(Context, CharSequence,
int)
yöntemini ve varyantlarını kullanarak durum mesajı yayınlamaya devam edebilir.
Bu değişiklik hakkında daha fazla bilgi edinmek için Özel durum mesajı görünümleri engellendi bölümüne bakın.
CHANGE_RESTRICT_SAW_INTENT
Değişiklik Kimliği: 135920175
Varsayılan durum: Bu değişiklik değiştirilemez. Yalnızca uyumluluk çerçevesi tarafından günlüğe kaydedilir.
android.settings.MANAGE_APP_OVERLAY_PERMISSION
işlemini ve package
veri URI şemasını kullanan amaçlar, artık ilişkili iznin yönetilmesi için kullanıcıyı uygulamaya özel bir ekrana yönlendirmez. Bunun yerine, kullanıcı, izni isteyen tüm uygulamaları yönetebileceği bir ekrana yönlendirilir.
CHANGE_TEXT_TOASTS_IN_SYSTEM
Değişiklik Kimliği: 147798919
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Metin toastları artık uygulama içi yerine SystemUI tarafından oluşturulur. Bu, uygulamaların arka planda özel durum mesajı yayınlama kısıtlamalarını atlatmasını önler.
DEFAULT_SCOPED_STORAGE
Değişiklik Kimliği: 149924527
Varsayılan durum: Tüm uygulamalar için etkindir.
Android 11'i hedefleyen tüm uygulamalar artık varsayılan olarak kapsamlı depolama alanını kullanır ve artık kapsamlı depolamayı devre dışı bırakamaz.
Ancak bu değişikliği devre dışı bırakarak uygulamanızın hedef SDK sürümü ve manifest işareti değerlerinden bağımsız olarak kapsamlı depolama alanı olmadan uygulamanızı test edebilirsiniz.
Android 11'deki kapsamlı depolama alanında yapılan değişiklikler hakkında daha fazla bilgi edinmek için Android 11'deki Android depolama alanında yapılan değişikliklerle ilgili sayfadaki Kısıtlı depolama bölümüne bakın.
BOŞLUK_INTENT_İŞLEM_KATEGORİSİ
Değişiklik Kimliği: 151163173
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalarda, amaç filtresinin action
veya
category
boş bir dizeyse sistem artık hata bildiriyor. Android 11'den önce platformda oluşan bir hata, destek kaydının hataya yol açmadan ilerlemesine imkan tanımıştır. Öznitelik null veya eksik olduğunda bu durum her zaman hataya yol açtığından, bunun bu kapsamda yer almadığını unutmayın.
FILTER_APPLICATION_QUERY
Değişiklik Kimliği: 135549675
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Artık uygulamaların bir cihazdaki diğer uygulamalarla ilgili ayrıntıları alabilmesi için kullanmayı amaçladıkları paketleri ve amaçları bildirmeleri gerekiyor. Bu tür beyanlar, uygulamanın manifest dosyasındaki <queries>
etiketi kullanılarak yapılmalıdır.
Android 11'de yüklü diğer uygulamaları sorgulama ve bunlarla etkileşimde bulunma hakkında daha fazla bilgi edinmek için paket görünürlüğü gizlilik sayfasına bakın.
ZORUNLU_ENABLE_SCOPED_STORAGE
Değişiklik Kimliği: Değer: 132649864
Varsayılan durum: Tüm uygulamalar için devre dışıdır.
Android 11'i hedefleyen tüm uygulamalar artık varsayılan olarak kapsamlı depolama alanını kullanır ve artık kapsamlı depolamayı devre dışı bırakamaz.
Ancak uygulamanız hâlâ Android 10 (API düzeyi 29) veya önceki sürümleri hedefliyorsa uygulamanızı hedef SDK sürümünden ve manifest işareti değerlerinden bağımsız olarak kapsamlı depolama alanıyla test etmek için bu değişikliği etkinleştirebilirsiniz.
Android 11'deki kapsamlı depolama alanında yapılan değişiklikler hakkında daha fazla bilgi edinmek için Android 11'deki Android depolama alanında yapılan değişikliklerle ilgili sayfadaki Kısıtlı depolama bölümüne bakın.
GET_DATA_CONNECTION_STATE_R_VERSION
Değişiklik Kimliği: 148535736
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
PreciseDataConnectionState#getDataConnectionState
öğesinin SDK sürümünü kontrol etmek için.
GET_DATA_STATE_R_VERSION
Değişiklik Kimliği: 148534348
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
getDataState()
için SDK sürümünü kontrol edin.
GET_PROVIDER_SECURITY_EXCEPTIONS
Değişiklik Kimliği: 150935354
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
getProvider(String)
, Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için artık güvenlik istisnası uygulamaz.
GET_TARGET_SDK_VERSION_CODE_CHANGE
Değişiklik Kimliği: 145147528
Varsayılan durum: Android 10 (API düzeyi 29) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
SmsManager.sendResolverResult()
yönteminin SDK sürümünü kontrol etmek için.
GWP_ASAN
Değişiklik Kimliği: 135634846
Varsayılan durum: Tüm uygulamalar için devre dışıdır.
Uygulamalarda örneklenmiş yerel bellek hata algılamasını etkinleştirir.
Bu değişiklik hakkında daha fazla bilgi edinmek için GWP-ASan kılavuzunu inceleyin.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
Değişiklik Kimliği: 149997251
Varsayılan durum: Android 10 (API düzeyi 29) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 10 (API düzeyi 29) veya sonraki sürümleri hedefleyen uygulamalarda, Android 10 (API düzeyi 29) için max-target-p
(greylist-max-p
) listesindeki SDK olmayan tüm arayüzlere erişim kaldırılır.
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
Değişiklik Kimliği: 149994052
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalarda, Android 11 (API düzeyi 30) için max-target-q
(greylist-max-q
) listesindeki SDK olmayan tüm arayüzlere erişim kaldırılır.
Bu değişiklik hakkında daha fazla bilgi edinmek için artık Android 11'de engellenmiş olan SDK dışı arayüzler bölümüne bakın.
LISTEN_CODE_CHANGE
Değişiklik Kimliği: 147600208
Varsayılan durum: Android 10 (API düzeyi 29) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
TelephonyManager.listen(PhoneStateListener,
int)
uygulamasının SDK sürümünü kontrol etmek için.
MISSING_APP_TAG
Değişiklik Kimliği: 150776642
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar için bir uygulamanın manifest dosyasında application
veya instrumentation
etiketi eksik olduğunda artık hata bildiriliyor.
NATIVE_HEAP_POINTER_TAGGING
Değişiklik Kimliği: 135754954
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar için yerel yığın ayırmaların en önemli baytında sıfır olmayan bir etiket bulunuyor.
Daha fazla bilgi edinmek için Yığın işaretçi etiketleme bölümünü inceleyin.
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
Değişiklik Kimliği: 150880553
Varsayılan durum: Tüm uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar için artık herhangi bir işlemin TelephonyManager.listen(PhoneStateListener, int)
aracılığıyla kaydedebileceği PhoneStateListener
nesnesi sayısı konusunda bir sınır vardır.
Varsayılan sınır 50'dir. Bu değer, uzak cihaz yapılandırma güncellemeleriyle değiştirilebilir.
Bu sınır, rahatsız edici işlem çok fazla sayıda işleyici kaydetmeye çalıştığında TelephonyManager.listen(PhoneStateListener, int)
tarafından atılan bir IllegalStateException
kullanılarak uygulanır.
PREVENT_META_REFLECTION_BLACKLIST_ERİŞİM
Değişiklik Kimliği: 142365358
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar, kısıtlanmış SDK dışı arayüzlere erişmek için artık ekstra düşünme katmanı kullanamaz.
İŞLECEK_KİMLİĞİ_DEĞİŞTİRME_KİMLİĞİ
Değişiklik Kimliği: 136274596
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalarda, Context.BIND_INCLUDE_CAPABILITIES
bayrağı artık kullanım sırasında özellikleri istemci işleminden bağlı bir hizmete geçirmek
için kullanılabilir.
REMOVE_ANDROID_TEST_BASE
Değişiklik Kimliği: 133396946
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalarda, uygulama android.test.runner
politikasını kullanmıyorsa (android.test.base
kitaplığındaki sınıflara bağlı olduğundan) android.test.base
kitaplığı kaldırılmıştır.
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
Değişiklik Kimliği: 136293963
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen erişilebilirlik hizmetleri için artık erişilebilirlik hizmeti meta veri dosyasında FLAG_REQUEST_ACCESSIBILITY_BUTTON
işareti belirtilmelidir.
Aksi takdirde, işaret yok sayılır.
Bu değişiklik hakkında daha fazla bilgi edinmek için Meta veri dosyasında erişilebilirlik düğmesi kullanımını bildirme bölümüne bakın.
KAYNAKLAR_ARSC_COMPRESSED
Değişiklik Kimliği: 132742131
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i (API düzeyi 30) hedefleyen uygulamalar, sıkıştırılmış bir resources.arsc
dosyası içeriyorsa veya bu dosya 4 baytlık bir sınırda hizalı değilse yüklenemez.
Bu değişiklik hakkında daha fazla bilgi edinmek için Sıkıştırılmış kaynak dosyaları bölümüne bakın.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
Değişiklik Kimliği: 141600225
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Uygulamanız Android 11'i hedefliyorsa ve Depolama Erişim Çerçevesi'ni (SAF) kullanıyorsa artık ACTION_OPEN_DOCUMENT
ve ACTION_OPEN_DOCUMENT_TREE
amaç işlemlerini kullanarak belirli dizinlere erişemezsiniz. Bu değişiklikler hakkında daha fazla bilgi edinmek için Android 11'deki depolama alanıyla ilgili gizlilik güncellemelerinin açıklandığı sayfadaki Doküman erişimi kısıtlamaları bölümüne göz atın.
SELINUX_LATEST_CHANGES
Değişiklik Kimliği: 143539591
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Bu değişiklik, uygulamaların güvenilmeyen_app_R-targetSDk SELinux alanına erişmesini sağlar.
Bu, uygulamaların kendi targetSDKVersion
politikasını değiştirmeden targetSdkVersion
tarafından korunan diğer değişiklikleri açıp kapatmalarına olanak tanıyan uyumluluk çerçevesindeki temel değişikliklerden biridir. Bu nedenle, Android 11'i hedefleyen bir uygulama için bu değişikliği devre dışı bırakmamalısınız. Aksi takdirde uygulama çalışmaz.
Bu değişikliğin, paylaşılan kullanıcı kimliği kullanan uygulamalar üzerinde herhangi bir etkisi yoktur.
THROW_SECURITY_EXCEPTIONS
Değişiklik Kimliği: 147340954
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'den önce SecurityException
, izin hatası nedeniyle yalnızca setEnabled
API'leri tarafından gönderilirdi. Android 11'de bu durum artık geçerli değil ve SecurityException
, arayanın maruz kalmaması gibi çeşitli nedenlerle atılabilir.
Mevcut API davranışını korumak için, Android 11'i hedeflemeyen bir uygulamada eski bir izin hatası veya işlemi gerçekleştiren kullanıcının yaptırım hatası meydana gelirse istisna, Android 11'den önceki kaynakta bulunan bir IllegalStateException
haline getirilir.
USE_SET_LOCATION_ENABLED
Değişiklik Kimliği: 117835097
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen yönetici uygulamaları, kullanımdan kaldırılan Settings.Secure.LOCATION_MODE
ayarını değiştirmek için artık DevicePolicyManager.setSecureSetting(ComponentName, String, String)
hizmetini kullanamaz. Bunun yerine DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
kullanmaları gerekir.