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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen uygulamalar için, bir tam sayı flags
bağımsız değişkeni içeren yeni bir herkese açık API aşırı yüklemesi
onChange(boolean, Uri, int)
mevcuttur.
Bu yeni yöntem, bir tam sayı userId
bağımsız değişkeni içeren onChange()
aşırı yüklenmiş SDK dışı yöntemini kullanan uygulamalar için genel bir SDK alternatifidir.
ADMIN_APP_PASSWORD_COMPLEXITY
Değişiklik kimliği: 123562444
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen yönetici uygulamaları, bir uygulama şu anda atanmış şifre kalitesiyle alakalı olmayan bir şifre koşulu belirlediğinde hata verir. Örneğin, şifre kalitesi DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
olarak ayarlandığında bir uygulama minimum şifre uzunluğu belirleyemez. Bu durumda, minimum şifre uzunluğunu ayarlamayı denemeden önce uygulamanın önce 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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda 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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkindir.
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 okuma erişimi kısıtlandı başlıklı makaleyi inceleyin.
BACKGROUND_RATIONALE_CHANGE_ID
Değişiklik kimliği: 147316723
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Uygulamalar artık cihazın konumuna arka planda erişmek istediklerinde geçerli bir gerekçe sunmalıdır.
Bu değişiklik hakkında daha fazla bilgi edinmek için Android 11'de arka plan konumuna erişme başlıklı rehbere göz atın. Bu rehberde, Android 11'deki konumla ilgili gizlilik değişiklikleri ele alınmaktadır.
CALLBACK_ON_CLEAR_CHANGE
Değişiklik kimliği: 119147584
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Editor.clear
her çağrıldığında artık null
anahtarıyla OnSharedPreferenceChangeListener.onSharedPreferenceChanged
için geri çağırma işlemi 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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda 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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
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 arama yapıyordu. Değişiklikten sonra sistem, işlem belirtilmemişse aslında istenen işlem veya tüm değiştirilen işlemler için geri arama yapacak.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
Değişiklik kimliği: 136219221
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda 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ımdayken kamera ve mikrofon özelliklerini alır. Android'in önceki sürümlerinde ön plan hizmetleri otomatik olarak kamera ve mikrofon özelliklerini 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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Uygulamalar artık arka planda özel bildirimler yayınlayamaz. Ancak uygulamalar arka planda çalışırken Toast.makeText(Context, CharSequence,
int)
yöntemini ve varyantlarını kullanarak yine de kısa mesajlar yayınlayabilir.
Bu değişiklik hakkında daha fazla bilgi edinmek için Özel kısa mesaj görünümleri engelleniyor başlıklı makaleyi inceleyin.
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 kaydedilir.
android.settings.MANAGE_APP_OVERLAY_PERMISSION
işlemini ve package
veri URI şemasını kullanan amaçlar 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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Metin bildirimleri artık uygulama içinde değil, SystemUI tarafından oluşturuluyor. Bu sayede uygulamaların, arka planda özel bildirim yayınlama kısıtlamalarını atlaması engelleniyor.
DEFAULT_SCOPED_STORAGE
Değişiklik kimliği: 149924527
Varsayılan durum: Tüm uygulamalar için etkinleştirilir.
Android 11'i hedefleyen tüm uygulamalar artık varsayılan olarak kapsamlı depolama kullanıyor ve kapsamlı depolamayı devre dışı bırakamıyor.
Ancak bu değişikliği devre dışı bırakarak uygulamanızın hedef SDK sürümünden ve manifest işaret değerlerinden bağımsız olarak uygulamanızı kapsamlı depolama olmadan test edebilirsiniz.
Android 11'deki kapsamlı depolama alanında yapılan değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de Android depolama alanında yapılan değişiklikler hakkındaki sayfadaki Kapsamlı depolama alanı bölümüne bakın.
EMPTY_INTENT_ACTION_CATEGORY
Değişiklik kimliği: 151163173
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen uygulamalarda, bir intent filtresinin action
veya category
boş bir dizeyse sistem artık hata veriyor. Android 11'den önceki platformda 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 durumlarda her zaman hata verilir.
FILTER_APPLICATION_QUERY
Değişiklik kimliği: 135549675
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Uygulamaların artık bir cihazdaki diğer uygulamalar hakkında ayrıntılı bilgi alabilmeleri için kullanmayı planladıkları paketleri ve amaçları beyan etmeleri gerekiyor. Bu tür beyanlar, uygulamanın manifest dosyasındaki <queries>
etiketi kullanılarak yapılmalıdır.
Android 11'de diğer yüklü uygulamaları sorgulama ve bu uygulamalarla etkileşim kurma hakkında daha fazla bilgi edinmek için paket görünürlüğü gizlilik sayfasına bakın.
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 kapsamlı depolamayı devre dışı bırakamıyor.
Ancak uygulamanız hâlâ Android 10'u (API düzeyi 29) veya önceki sürümleri 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 ile test edebilirsiniz.
Android 11'deki kapsamlı depolama alanında yapılan değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de Android depolama alanında yapılan değişiklikler hakkındaki sayfadaki 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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
PreciseDataConnectionState#getDataConnectionState
için SDK sürümünü kontrol etmek üzere.
GET_DATA_STATE_R_VERSION
Değişiklik kimliği: 148534348
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
getDataState()
için SDK sürümünü kontrol etmek üzere.
GET_PROVIDER_SECURITY_EXCEPTIONS
Değişiklik kimliği: 150935354
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için:
getProvider(String)
artık güvenlik istisnası oluşturulmuyor.
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 uygulamalarda etkinleştirilir.
SmsManager.sendResolverResult()
yönteminin SDK sürümünü kontrol etmek için.
GWP_ASAN
Change ID: 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 uygulamalarda etkinleştirilir.
Android 10 (API düzeyi 29) veya daha yeni sürümleri hedefleyen uygulamalar için, Android 10 (API düzeyi 29) max-target-p
(greylist-max-p
) listesinde yer alan 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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i (API düzeyi 30) veya daha yeni sürümleri hedefleyen uygulamalarda, Android 11 (API düzeyi 30) için max-target-q
(greylist-max-q
) listesinde yer alan 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 olmayan 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 uygulamalarda etkinleştirilir.
TelephonyManager.listen(PhoneStateListener,
int)
için SDK sürümünü kontrol etmek üzere.
MISSING_APP_TAG
Değişiklik kimliği: 150776642
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen uygulamaların manifest dosyasında application
veya instrumentation
etiketi eksik olduğunda artık hata veriliyor.
NATIVE_HEAP_POINTER_TAGGING
Değişiklik kimliği: 135754954
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen uygulamalarda, yerel yığın ayırmaları artık en önemli baytta sıfır olmayan bir etikete sahip.
Daha fazla bilgi için Heap 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 etkinleştirilir.
Android 11'i hedefleyen uygulamalarda, herhangi bir işlemin TelephonyManager.listen(PhoneStateListener, int)
aracılığıyla kaydedebileceği PhoneStateListener
nesnelerinin sayısı artık sınırlıdır.
Varsayılan sınır 50'dir ve uzaktan cihaz yapılandırma güncellemeleriyle değiştirilebilir.
Bu sınır, TelephonyManager.listen(PhoneStateListener, int)
tarafından oluşturulan bir IllegalStateException
kullanılarak uygulanır. Bu hata, ihlalde bulunan işlem çok fazla dinleyici kaydetmeye çalıştığında oluşturulur.
PREVENT_META_REFLECTION_BLACKLIST_ACCESS
Değişiklik kimliği: 142365358
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen uygulamalar, artık kısıtlanmış SDK dışı arayüzlere erişmek için ek bir yansıtma katmanı kullanamaz.
PROCESS_CAPABILITY_CHANGE_ID
Değişiklik kimliği: 136274596
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen uygulamalarda, istemci işleminden bağlı bir hizmete kullanım sırasında özelliklerini aktarmak için artık Context.BIND_INCLUDE_CAPABILITIES
işareti kullanılabilir.
REMOVE_ANDROID_TEST_BASE
Değişiklik kimliği: 133396946
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen uygulamalarda, uygulama android.test.base
kitaplığına bağımlı değilse android.test.base
kitaplığı kaldırılmıştır (çünkü android.test.base
kitaplığındaki sınıflara bağımlıdır).android.test.runner
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
Değişiklik kimliği: 136293963
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen erişilebilirlik hizmetleri için FLAG_REQUEST_ACCESSIBILITY_BUTTON
işareti artık erişilebilirlik hizmeti meta veri dosyasında belirtilmelidir.
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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i (API düzeyi 30) hedefleyen uygulamalar, sıkıştırılmış resources.arsc
dosyası içeriyorsa veya bu dosya 4 baytlık bir sınıra göre 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'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Uygulamanız Android 11'i hedefliyorsa ve Storage Access Framework (SAF)'i 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'de depolamayla ilgili gizlilik güncellemelerinin ele alındığı sayfadaki Belge erişimi kısıtlamaları bölümüne bakın.
SELINUX_LATEST_CHANGES
Değişiklik kimliği: 143539591
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkindir.
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, targetSdkVersion
ile sınırlanan diğer değişiklikleri, uygulamalarının targetSDKVersion
değerini değiştirmeden etkinleştirebilir veya devre dışı bırakabilir. Bu nedenle, Android 11'i hedefleyen bir uygulamada bu değişikliği devre dışı bırakmamalısınız. Aksi takdirde uygulama çalışmaz.
Bu değişiklik, paylaşılan kullanıcı kimliği kullanan uygulamaları etkilemez.
THROW_SECURITY_EXCEPTIONS
Değişiklik kimliği: 147340954
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkindir.
Android 11'den önce, SecurityException
yalnızca izin hatası için setEnabled
API'leri tarafından oluşturulurdu. Android 11'de bu durum geçerli değildir ve SecurityException
, çeşitli nedenlerle oluşturulabilir. Bu nedenlerin hiçbiri arayan tarafa gösterilmez.
Mevcut API davranışını korumak için Android 11'i hedeflemeyen bir uygulamada eski izin hatası veya aktör zorlama hatası meydana gelirse istisna, Android 11'den önce kaynakta bulunan bir IllegalStateException
'ye dönüştürülür.
USE_SET_LOCATION_ENABLED
Değişiklik kimliği: 117835097
Varsayılan durum: Android 11'i (API düzeyi 30) veya daha yüksek bir sürümü hedefleyen uygulamalarda etkinleştirilir.
Android 11'i hedefleyen yönetici uygulamaları, artık kullanımdan kaldırılan Settings.Secure.LOCATION_MODE
ayarını değiştirmek için DevicePolicyManager.setSecureSetting(ComponentName, String, String)
kullanamaz. Bunun yerine DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
kullanılmalıdır.