Uyumluluk çerçevesi değişiklikleri (Android 11)

Bu sayfada, Android 11'deki (API düzeyi 30) uyumluluk çerçevesine eklenen ve uygulamaları etkileyen her davranış değişikliği açıklanmaktadır. Android 11'i hedeflemeye hazırlanırken uygulamanızı test etmek ve hatalarını ayıklamak için bu listeyi geliştirici seçenekleri ve ADB komutlarıyla 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 etkinleştirilir.

Android 11'i hedefleyen uygulamalar için flags tam sayı bağımsız değişkeni içeren yeni bir herkese açık API aşırı yüklemesi onChange(boolean, Uri, int) vardır.

Bu yeni yöntem, tam sayı userId bağımsız değişkeni içeren SDK dışı onChange() aşırı yüklenmiş yöntemini kullanan uygulamalar için herkese açık bir SDK alternatifidir.

ADMIN_APP_PASSWORD_COMPLEXITY

Değişiklik kimliği: 123562444

Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkinleştirilir.

Android 11'i hedefleyen yönetici uygulamalarında, bir uygulama o anda atanmış şifre kalitesiyle alakalı olmayan bir şifre şartı belirlediğinde hata verilir. Örneğin, şifre kalitesi DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED olarak ayarlandığında uygulamalar minimum şifre uzunluğu belirleyemez. Bu durumda, minimum şifre uzunluğunu ayarlamaya çalışmadan önce uygulamanın ilk olarak setPasswordQuality() yöntemini, ardından 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 koşulları 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 etkinleştirilir.

Android 11'i hedefleyen uygulamalar, diğer uygulamanın hedef SDK sürümünden bağımsız olarak herhangi bir uygulamanın özel veri dizinlerindeki dosyalara artık erişemez.

Daha fazla bilgi edinmek için Özel dizinlere erişim başlıklı makaleyi inceleyin.

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 etkinleştirilir.

Android 11'i hedefleyen uygulamalarda APN veritabanına erişmek için artık Manifest.permission.WRITE_APN_SETTINGS izni gerekiyor.

Bu değişiklik hakkında daha fazla bilgi edinmek için APN veritabanına kısıtlı okuma erişimi başlıklı makaleyi 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 etkinleştirilir.

Uygulamaların artık cihazın konumuna arka planda erişmek istedikleri her seferde geçerli bir gerekçe sunmaları gerekiyor.

Bu değişiklik hakkında daha fazla bilgi edinmek için Android 11'de konumla ilgili gizlilik değişikliklerinin ele alındığı Android 11'de arka plan konumuna 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 etkinleştirilir.

Editor.clear her çağrıldığında, null anahtarıyla OnSharedPreferenceChangeListener.onSharedPreferenceChanged adresine geri çağırma yapılır.

Bu değişiklik hakkında daha fazla bilgi edinmek için OnSharedPreferenceChangeListener için geri çağırma değişiklikleri başlıklı makaleyi inceleyin.

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 etkinleştirilir.

Hata kodları artık updateAvailableNetworks(List, Executor, Consumer) ve setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer) için 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 etkinleştirilir.

Bu, startWatchingMode(String, String, AppOpsManager.OnOpChangedListener) için küçük bir davranış değişikliğidir. Bu değişiklikten önce sistem, değiştirilen işlem için geri çağırma yapıyordu. Değişiklikten sonra sistem, gerçekten istenen işlem veya işlem belirtilmemişse değiştirilen tüm işlemler için geri çağırma yapacak.

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 etkinleştirilir.

Android 11'i hedefleyen uygulamalarda ön plan hizmetleri, yalnızca manifest dosyasında R.attr.foregroundServiceType, ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA ve ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE olarak yapılandırıldığında kullanım sırasında kamera ve mikrofon özelliklerini alır. Android'in önceki sürümlerinde ön plan hizmetleri, kamera ve mikrofon özelliklerini otomatik olarak alıyordu.

Bu değişiklik hakkında daha fazla bilgi edinmek için Android 11'deki ön plan hizmeti türleri başlıklı makaleyi inceleyin.

CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

Değişiklik kimliği: 128611929

Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkinleştirilir.

Uygulamalar artık arka planda özel kısa süreli bildirimler yayınlayamaz. Ancak uygulamalar, arka plandayken Toast.makeText(Context, CharSequence, int) yöntemini ve varyantlarını kullanarak kısa süreli bildirim yayınlamaya devam edebilir.

Bu değişiklik hakkında daha fazla bilgi edinmek için Özel toast görünümleri engellenir başlıklı makaleyi inceleyin.

CHANGE_RESTRICT_SAW_INTENT

Değişiklik kimliği: 135920175

Varsayılan durum: Bu değişiklik açılıp kapatılamaz. 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 intent'ler artık kullanıcıyı ilişkili izni yönetmek için uygulamaya özel bir ekrana yönlendirmiyor. Bunun yerine kullanıcı, izin isteyen tüm uygulamaları yönetebileceği bir ekrana yönlendirilir.

CHANGE_TEXT_TOASTS_IN_THE_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 etkinleştirilir.

Metin bildirimleri artık uygulama içinde değil, SystemUI tarafından oluşturulur. Bu sayede uygulamaların, arka planda özel bildirim yayınlama kısıtlamalarını aşması engellenir.

DEFAULT_SCOPED_STORAGE

Değişiklik kimliği: 149924527

Varsayılan durum: Tüm uygulamalar için etkin.

Android 11'i hedefleyen tüm uygulamalar artık varsayılan olarak kapsamlı depolama kullanıyor ve artık kapsamlı depolama alanını devre dışı bırakamıyor.

Ancak bu değişikliği devre dışı bırakarak uygulamanızı, hedef SDK sürümünden ve manifest işaret değerlerinden bağımsız olarak kapsamlı depolama alanı olmadan test edebilirsiniz.

Android 11'de kapsamlı depolama alanıyla ilgili değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de Android depolama alanıyla ilgili değişiklikler sayfasındaki Kapsamlı depolama alanı bölümüne bakın.

EMPTY_INTENT_ACTION_CATEGORY

Değişiklik kimliği: 151163173

Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkinleştirilir.

Android 11'i hedefleyen uygulamalarda, intent filtresinin action veya category değeri boş bir dizeyse sistem artık hata veriyor. Android 11'den önceki platformlarda bulunan bir hata, bu durumun hata vermeden geçmesine izin veriyordu. Bu durumun, özelliğin boş veya eksik olduğu durumları kapsamadığını unutmayın. Bu durumlar her zaman hata verir.

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 etkinleştirilir.

Uygulamaların, cihazdaki diğer uygulamalar hakkında bilgi alabilmesi için kullanmayı planladıkları paketleri ve amaçları beyan etmeleri gerekir. 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şim kurma hakkında daha fazla bilgi edinmek için paket görünürlüğü gizlilik sayfasını inceleyin.

FORCE_ENABLE_SCOPED_STORAGE

Değişiklik kimliği: Değer: 132649864

Varsayılan durum: Tüm uygulamalar için devre dışı.

Android 11'i hedefleyen tüm uygulamalar artık varsayılan olarak kapsamlı depolama kullanıyor ve artık kapsamlı depolama alanını devre dışı bırakamıyor.

Ancak uygulamanız hâlâ Android 10'u (API düzeyi 29) veya daha eski bir sürümü hedefliyorsa bu değişikliği etkinleştirerek uygulamanızın hedef SDK sürümünden ve manifest işaret değerlerinden bağımsız olarak uygulamanızı kapsamlı depolama alanıyla test edebilirsiniz.

Android 11'de kapsamlı depolama alanıyla ilgili değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de Android depolama alanıyla ilgili değişiklikler sayfasındaki Kapsamlı depolama alanı 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 etkinleştirilir.

PreciseDataConnectionState#getDataConnectionState için SDK sürümünü kontrol etmek istiyorsanız

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 etkinleştirilir.

getDataState() için SDK sürümünü kontrol etmek istiyorsanız

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 etkinleştirilir.

Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalarda, getProvider(String) artık güvenlik istisnası oluşturmaz.

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 kullanılır.

GWP_ASAN

Değişiklik kimliği: 135634846

Varsayılan durum: Tüm uygulamalar için devre dışı.

Uygulamalarda örneklenmiş yerel bellek hatası algılamayı etkinleştirir.

Bu değişiklik hakkında daha fazla bilgi edinmek için GWP-ASan kılavuzuna bakın.

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) listesinin parçası olan tüm SDK dışı arayüzlere erişimi kaldırı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 etkinleştirilir.

Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için Android 11 (API düzeyi 30) ile ilgili max-target-q (greylist-max-q) listesinin parçası olan tüm SDK dışı arayüzlere erişimi kaldırır.

Bu değişiklik hakkında daha fazla bilgi edinmek için Android 11'de artık engellenen SDK dışı arayüzler başlıklı makaleyi inceleyin.

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) için SDK sürümünü kontrol etmek istiyorsanız.

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 etkinleştirilir.

Android 11'i hedefleyen uygulamalarda, uygulamanın manifest dosyasında application veya instrumentation etiketi eksik olduğunda artık hata mesajı gösteriliyor.

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 etkinleştirilir.

Android 11'i hedefleyen uygulamalarda, yerel yığın ayırmaların en önemli baytında artık sıfır olmayan bir etiket bulunur.

Daha fazla bilgi edinmek için Yığın işaretçisi etiketleme başlıklı makaleyi inceleyin.

PHONE_STATE_LISTENER_LIMIT_CHANGE_ID

Değişiklik kimliği: 150880553

Varsayılan durum: Tüm uygulamalar için etkin.

Android 11'i hedefleyen uygulamalarda, herhangi bir işlemin TelephonyManager.listen(PhoneStateListener, int) aracılığıyla kaydedebileceği PhoneStateListener nesnelerinin sayısına bir sınır getirilmiştir. Varsayılan sınır 50'dir. Bu sınır, uzaktan cihaz yapılandırması güncellemeleriyle değiştirilebilir. Bu sınır, sorunlu işlem çok fazla dinleyici kaydetmeye çalıştığında TelephonyManager.listen(PhoneStateListener, int) tarafından oluşturulan bir IllegalStateException kullanılarak uygulanır.

PREVENT_META_REFLECTION_BLACKLIST_ACCESS

Değişiklik kimliği: 142365358

Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkinleştirilir.

Android 11'i hedefleyen uygulamalar, kısıtlanmış SDK dışı arayüzlere erişmek için artık ek bir yansıma katmanı kullanamaz.

PROCESS_CAPABILITY_CHANGE_ID

Değişiklik kimliği: 136274596

Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkinleştirilir.

Android 11'i hedefleyen uygulamalarda, Context.BIND_INCLUDE_CAPABILITIES işareti artık kullanım sırasında özellikleri istemci işleminden bağlı bir hizmete aktarmak 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 etkinleştirilir.

Android 11'i hedefleyen uygulamalarda, uygulama android.test.runner kitaplığına bağlı değilse android.test.base kitaplığı kaldırılmıştır (android.test.base kitaplığındaki sınıflara bağlı olduğu için).

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 etkinleştirilir.

Android 11'i hedefleyen erişilebilirlik hizmetleri için FLAG_REQUEST_ACCESSIBILITY_BUTTON işaretinin artık erişilebilirlik hizmeti meta veri dosyasında belirtilmesi gerekir. Aksi takdirde işaret yoksayı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ı beyan etme başlıklı makaleyi inceleyin.

RESOURCES_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 etkinleştirilir.

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 hizalanmamışsa yüklenemez.

Bu değişiklik hakkında daha fazla bilgi edinmek için Sıkıştırılmış kaynak dosyaları başlıklı makaleyi inceleyin.

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 etkinleştirilir.

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 intent işlemlerini kullanarak belirli dizinlere erişemezsiniz. Bu değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de depolama alanıyla ilgili gizlilik güncellemelerinin ele alındığı sayfadaki Doküman erişim kısıtlamaları bölümüne bakı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 etkinleştirilir.

Bu değişiklik, uygulamaların untrusted_app_R-targetSDk SELinux alanına erişimini kısıtlar. Bu, uyumluluk çerçevesindeki temel değişikliklerden biridir. Bu değişiklik sayesinde uygulamalar, uygulamanın targetSDKVersion değerini değiştirmeden targetSdkVersion tarafından kısıtlanan diğer değişiklikleri etkinleştirip devre dışı bırakabilir. Bu nedenle, Android 11'i hedefleyen bir uygulama için bu değişikliği devre dışı bırakmamanız gerekir. 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 etkinleştirilir.

Android 11'den önce, izin hatası için yalnızca setEnabled API'leri tarafından SecurityException oluşturulurdu. Android 11'de bu durum artık geçerli değildir ve çeşitli nedenlerle SecurityException hatası verilebilir. Bu nedenlerin hiçbiri arayana gösterilmez.

Mevcut API davranışını korumak için, Android 11'i hedeflemeyen bir uygulamada eski izin hatası veya aktör yaptırım hatası meydana gelirse istisna, Android 11'den önce kaynakta bulunan bir IllegalStateException'ye zorlanır.

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 etkinleştirilir.

Android 11'i hedefleyen yönetici uygulamaları, desteği sonlandırılan Settings.Secure.LOCATION_MODE ayarını değiştirmek için artık DevicePolicyManager.setSecureSetting(ComponentName, String, String) yöntemini kullanamaz. Bunun yerine DevicePolicyManager.setLocationEnabled(ComponentName, boolean) kullanmaları gerekir.