تغییرات چارچوب سازگاری (Android 11)

این صفحه هر تغییر رفتار تأثیرگذار برنامه را که به چارچوب سازگاری در Android 11 اضافه شده است (سطح API 30) توضیح می‌دهد. از این لیست همراه با گزینه‌های توسعه‌دهنده و دستورات ADB برای آزمایش و اشکال‌زدایی برنامه خود هنگام آماده شدن برای هدف قرار دادن اندروید 11 استفاده کنید.

ADD_CONTENT_OBSERVER_FLAGS

شناسه تغییر : 150939131

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که اندروید 11 را هدف قرار می‌دهند، یک API عمومی جدید اضافه بار onChange(boolean, Uri, int) وجود دارد که شامل یک آرگومان flags عدد صحیح است.

این روش جدید یک جایگزین SDK عمومی برای برنامه‌هایی است که از روش overloaded onChange() غیر SDK استفاده می‌کنند که شامل یک آرگومان userId عدد صحیح است.

ADMIN_APP_PASSWORD_COMPLEXITY

شناسه تغییر : 123562444

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌های سرپرستی که Android 11 را هدف قرار می‌دهند، هر زمان که برنامه‌ای گذرواژه‌ای را تعیین می‌کند که به کیفیت گذرواژه اختصاص‌داده‌شده در حال حاضر مرتبط نیست، خطایی ایجاد کنید. به عنوان مثال، وقتی کیفیت رمز عبور روی DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED تنظیم می شود، برنامه نمی تواند حداقل طول گذرواژه را تنظیم کند. در این حالت، قبل از تلاش برای تعیین حداقل طول رمز عبور، برنامه ابتدا باید متد setPasswordQuality() و تنها سپس متد setPasswordMinimumLength() فراخوانی کند.

علاوه بر این، هنگامی که یک برنامه مدیریتی که اندروید 11 را هدف قرار می دهد، کیفیت رمز عبور را کاهش می دهد، هر مورد نیاز رمز عبور موجود که دیگر اعمال نمی شود به مقادیر پیش فرض خود بازنشانی می شود.

APP_DATA_DIRECTORY_ISOLATION

شناسه تغییر : 143937733

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برنامه‌هایی که Android 11 را هدف قرار می‌دهند، دیگر نمی‌توانند به فایل‌ها در فهرست راهنمای داده‌های خصوصی هر برنامه دسترسی داشته باشند، صرفنظر از نسخه SDK هدف برنامه دیگر.

برای کسب اطلاعات بیشتر، دسترسی به فهرست های خصوصی را ببینید.

APN_READING_PERMISSION_CHANGE_ID

شناسه تغییر : 124107808

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که Android 11 را هدف قرار می‌دهند، دسترسی به پایگاه داده APN اکنون به مجوز Manifest.permission.WRITE_APN_SETTINGS نیاز دارد.

برای کسب اطلاعات بیشتر در مورد این تغییر، دسترسی خواندن محدود به پایگاه داده APN را ببینید.

BACKGROUND_RATIONALE_CHANGE_ID

شناسه تغییر : 147316723

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

اکنون برنامه‌ها باید هر بار که درخواست دسترسی به موقعیت مکانی دستگاه در پس‌زمینه را دارند، دلیل معتبری ارائه دهند.

برای کسب اطلاعات بیشتر در مورد این تغییر، راهنمای نحوه دسترسی به موقعیت مکانی پس‌زمینه در اندروید 11 را ببینید که تغییرات حریم خصوصی مربوط به مکان در اندروید 11 را مورد بحث قرار می‌دهد.

CALLBACK_ON_CLEAR_CHANGE

شناسه تغییر : 119147584

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

هر زمان که Editor.clear فراخوانی شود، اکنون با یک کلید null به OnSharedPreferenceChangeListener.onSharedPreferenceChanged پاسخ تماس داده می شود.

برای کسب اطلاعات بیشتر درباره این تغییر، به تغییرات Callback برای OnSharedPreferenceChangeListener مراجعه کنید.

CALLBACK_ON_MORE_ERROR_CODE_CHANGE

شناسه تغییر : 130595455

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

اکنون کدهای خطا برای updateAvailableNetworks(List, Executor, Consumer) و setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer) گسترش می‌یابند.

CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE

شناسه تغییر : 148180766

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

این یک تغییر رفتار ظریف به startWatchingMode(String, String, AppOpsManager.OnOpChangedListener) . قبل از این تغییر، سیستم برای عملیات سوئیچ شده دوباره فراخوانی کرد. پس از تغییر، سیستم برای عملیات درخواستی واقعی یا تمام عملیات سوئیچ شده در صورتی که هیچ عملیاتی مشخص نشده باشد، تماس خواهد گرفت.

CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID

شناسه تغییر : 136219221

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که Android 11 را هدف قرار می‌دهند، سرویس‌های پیش‌زمینه فقط زمانی که R.attr.foregroundServiceType به ترتیب به‌عنوان ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA و ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE پیکربندی شده باشند، قابلیت‌های دوربین و میکروفون در حین استفاده را دریافت می‌کنند. در نسخه های قبلی اندروید، سرویس های پیش زمینه به طور خودکار قابلیت های دوربین و میکروفون را دریافت می کردند.

برای کسب اطلاعات بیشتر در مورد این تغییر، به انواع خدمات پیش زمینه در اندروید 11 مراجعه کنید.

CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

شناسه تغییر : 128611929

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برنامه‌ها دیگر نمی‌توانند نان تست سفارشی را در پس‌زمینه پست کنند. با این حال، برنامه‌ها همچنان می‌توانند با استفاده از روش Toast.makeText(Context, CharSequence, int) و انواع آن در پس‌زمینه، نان تست ارسال کنند.

برای کسب اطلاعات بیشتر درباره این تغییر، مشاهده نان تست سفارشی مسدود شده است را ببینید.

CHANGE_RESTRICT_SAW_INTENT

شناسه تغییر : 135920175

حالت پیش فرض : این تغییر را نمی توان تغییر داد. فقط توسط چارچوب سازگاری ثبت شده است.

مقاصد با استفاده از عملکرد android.settings.MANAGE_APP_OVERLAY_PERMISSION و طرح URI داده های package ، دیگر کاربر را برای مدیریت مجوز مرتبط به صفحه مخصوص برنامه هدایت نمی کند. در عوض، کاربر به صفحه‌ای هدایت می‌شود که در آن می‌تواند تمام برنامه‌هایی را که مجوز درخواست کرده‌اند مدیریت کند.

CHANGE_TEXT_TOASTS_IN_THE_SYSTEM

شناسه تغییر : 147798919

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

نان تست های متنی اکنون به جای درون برنامه توسط SystemUI ارائه می شوند. این امر مانع از دور زدن محدودیت‌های ارسال نان تست سفارشی در پس‌زمینه توسط برنامه‌ها می‌شود.

DEFAULT_SCOPED_STORAGE

شناسه تغییر : 149924527

حالت پیش‌فرض : برای همه برنامه‌ها فعال است.

همه برنامه‌هایی که Android 11 را هدف قرار می‌دهند، اکنون به‌طور پیش‌فرض از فضای ذخیره‌سازی محدوده‌دار استفاده می‌کنند و دیگر نمی‌توانند از فضای ذخیره‌سازی محدوده انصراف دهند .

با این حال، بدون در نظر گرفتن نسخه SDK هدف برنامه و مقادیر پرچم مانیفست، با خاموش کردن این تغییر، می‌توانید برنامه خود را بدون فضای ذخیره‌سازی محدوده آزمایش کنید.

برای کسب اطلاعات بیشتر در مورد تغییرات فضای ذخیره سازی scoped در Android 11، به بخش Scoped storage در صفحه مربوط به تغییرات در فضای ذخیره سازی Android در Android 11 مراجعه کنید.

EMPTY_INTENT_ACTION_CATEGORY

شناسه تغییر : 151163173

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که اندروید 11 را هدف قرار می‌دهند، اگر action یا category فیلتر هدف یک رشته خالی باشد، سیستم اکنون با خطا مواجه می‌شود. یک باگ در پلتفرم قبل از اندروید 11 به این کیس اجازه می داد تا بدون ایجاد خطا از آن عبور کند. توجه داشته باشید که این موارد شامل مواردی نمی شود که مشخصه تهی یا از دست رفته باشد، زیرا همیشه یک خطا ایجاد می کند.

FILTER_APPLICATION_QUERY

شناسه تغییر : 135549675

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

اکنون برنامه‌ها باید بسته‌ها و اهدافی را که قصد استفاده از آنها را دارند، قبل از اینکه بتوانند جزئیات برنامه‌های دیگر را در دستگاه دریافت کنند، اعلام کنند. چنین اظهاراتی باید با استفاده از برچسب <queries> در مانیفست برنامه انجام شود.

برای کسب اطلاعات بیشتر در مورد نحوه پرس و جو و تعامل با سایر برنامه های نصب شده در Android 11، به صفحه حریم خصوصی قابلیت مشاهده بسته مراجعه کنید.

FORCE_ENABLE_SCOPED_STORAGE

شناسه تغییر : مقدار: 132649864

حالت پیش‌فرض : برای همه برنامه‌ها غیرفعال است.

همه برنامه‌هایی که Android 11 را هدف قرار می‌دهند، اکنون به‌طور پیش‌فرض از فضای ذخیره‌سازی محدوده‌دار استفاده می‌کنند و دیگر نمی‌توانند از فضای ذخیره‌سازی محدوده انصراف دهند .

با این حال، اگر برنامه شما همچنان Android 10 (سطح API 29) یا پایین‌تر را هدف قرار می‌دهد، می‌توانید با روشن کردن این تغییر، برنامه خود را بدون در نظر گرفتن نسخه SDK هدف برنامه و مقادیر پرچم مانیفست، با فضای ذخیره‌سازی محدوده آزمایش کنید.

برای کسب اطلاعات بیشتر در مورد تغییرات فضای ذخیره سازی scoped در Android 11، به بخش Scoped storage در صفحه مربوط به تغییرات در فضای ذخیره سازی Android در Android 11 مراجعه کنید.

GET_DATA_CONNECTION_STATE_R_VERSION

شناسه تغییر : 148535736

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای بررسی نسخه SDK برای PreciseDataConnectionState#getDataConnectionState .

GET_DATA_STATE_R_VERSION

شناسه تغییر : 148534348

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای بررسی نسخه SDK برای getDataState() .

GET_PROVIDER_SECURITY_EXCEPTIONS

شناسه تغییر : 150935354

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند، getProvider(String) دیگر هیچ استثنای امنیتی ایجاد نمی‌کند.

GET_TARGET_SDK_VERSION_CODE_CHANGE

شناسه تغییر : 145147528

حالت پیش‌فرض : برای برنامه‌هایی که Android 10 (سطح API 29) یا بالاتر را هدف قرار می‌دهند فعال است.

برای بررسی نسخه SDK برای متد SmsManager.sendResolverResult() .

GWP_ASAN

شناسه تغییر : 135634846

حالت پیش‌فرض : برای همه برنامه‌ها غیرفعال است.

تشخیص اشکال حافظه بومی نمونه را در برنامه ها فعال می کند.

برای کسب اطلاعات بیشتر در مورد این تغییر، به راهنمای GWP-ASan مراجعه کنید.

HIDE_MAXTARGETSDK_P_HIDDEN_APIS

شناسه تغییر : 149997251

حالت پیش‌فرض : برای برنامه‌هایی که Android 10 (سطح API 29) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که Android 10 (سطح API 29) یا بالاتر را هدف قرار می‌دهند، دسترسی به همه رابط‌های غیر SDK را که بخشی از فهرست max-target-p ( greylist-max-p ) برای Android 10 (سطح API 29) هستند، حذف می‌کند.

HIDE_MAXTARGETSDK_Q_HIDDEN_APIS

شناسه تغییر : 149994052

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند، دسترسی به همه رابط‌های غیر SDK را که بخشی از فهرست max-target-q ( greylist-max-q ) برای Android 11 (سطح API 30) هستند، حذف می‌کند.

برای کسب اطلاعات بیشتر در مورد این تغییر، به رابط‌های غیر SDK که اکنون در Android 11 مسدود شده‌اند، مراجعه کنید.

LISTEN_CODE_CHANGE

شناسه تغییر : 147600208

حالت پیش‌فرض : برای برنامه‌هایی که Android 10 (سطح API 29) یا بالاتر را هدف قرار می‌دهند فعال است.

برای بررسی نسخه SDK برای TelephonyManager.listen(PhoneStateListener, int) .

MISSING_APP_TAG

شناسه تغییر : 150776642

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که اندروید 11 را هدف قرار می‌دهند، اکنون زمانی که فایل مانیفست برنامه فاقد برچسب application یا instrumentation دقیق باشد، خطایی ایجاد می‌شود.

NATIVE_HEAP_POINTER_TAGGING

شناسه تغییر : 135754954

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که Android 11 را هدف قرار می‌دهند، تخصیص هیپ بومی اکنون دارای یک برچسب غیر صفر در مهم‌ترین بایت است.

برای کسب اطلاعات بیشتر، برچسب‌گذاری نشانگر هیپ را ببینید.

PHONE_STATE_LISTENER_LIMIT_CHANGE_ID

شناسه تغییر : 150880553

حالت پیش‌فرض : برای همه برنامه‌ها فعال است.

برای برنامه‌هایی که Android 11 را هدف قرار می‌دهند، اکنون محدودیتی برای تعداد اشیاء PhoneStateListener وجود دارد که هر فرآیندی ممکن است از طریق TelephonyManager.listen(PhoneStateListener, int) ثبت شود. حد پیش‌فرض 50 است که ممکن است با به‌روزرسانی‌های پیکربندی دستگاه از راه دور تغییر کند. این محدودیت با استفاده از یک IllegalStateException که توسط TelephonyManager.listen(PhoneStateListener, int) پرتاب می‌شود، اعمال می‌شود، زمانی که فرآیند توهین‌آمیز تلاش می‌کند یک شنونده بیش از حد ثبت کند.

PREVENT_META_REFLECTION_BLACKLIST_ACCESS

شناسه تغییر : 142365358

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برنامه‌هایی که اندروید 11 را هدف قرار می‌دهند دیگر نمی‌توانند از یک لایه بازتاب اضافی برای دسترسی به رابط‌های غیر SDK که محدود هستند استفاده کنند.

PROCESS_CAPABILITY_CHANGE_ID

شناسه تغییر : 136274596

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که Android 11 را هدف قرار می‌دهند، اکنون می‌توان از پرچم Context.BIND_INCLUDE_CAPABILITIES برای انتقال قابلیت‌های حین استفاده از فرآیند مشتری به یک سرویس محدود استفاده کرد.

REMOVE_ANDROID_TEST_BASE

شناسه تغییر : 133396946

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای برنامه‌هایی که Android 11 را هدف قرار می‌دهند، اگر برنامه به android.test.runner وابسته نباشد، کتابخانه android.test.base حذف شده است (زیرا به کلاس‌های کتابخانه android.test.base بستگی دارد).

REQUEST_ACCESSIBILITY_BUTTON_CHANGE

شناسه تغییر : 136293963

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برای سرویس‌های دسترس‌پذیری که Android 11 را هدف قرار می‌دهند، اکنون باید پرچم FLAG_REQUEST_ACCESSIBILITY_BUTTON در فایل فراداده سرویس دسترس‌پذیری مشخص شود. در غیر این صورت، پرچم نادیده گرفته می شود.

برای کسب اطلاعات بیشتر درباره این تغییر، به اعلام استفاده از دکمه دسترسی در فایل ابرداده مراجعه کنید.

RESOURCES_ARSC_COMPRESSED

شناسه تغییر : 132742131

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برنامه‌هایی که Android 11 (سطح API 30) را هدف قرار می‌دهند، اگر حاوی فایل فشرده‌شده resources.arsc باشند یا اگر این فایل در یک مرز 4 بایتی تراز نشده باشد، نمی‌توانند نصب شوند.

برای کسب اطلاعات بیشتر در مورد این تغییر، فایل‌های منبع فشرده را ببینید.

RESTRICT_STORAGE_ACCESS_FRAMEWORK

شناسه تغییر : 141600225

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

اگر برنامه شما Android 11 را هدف قرار می‌دهد و از چارچوب دسترسی به فضای ذخیره‌سازی (SAF) استفاده می‌کند، دیگر نمی‌توانید با استفاده از کنش‌های هدف ACTION_OPEN_DOCUMENT و ACTION_OPEN_DOCUMENT_TREE به فهرست‌های راهنمای خاصی دسترسی پیدا کنید. برای کسب اطلاعات بیشتر در مورد این تغییرات، بخش محدودیت‌های دسترسی به سند را در صفحه‌ای که به‌روزرسانی‌های حریم خصوصی مربوط به فضای ذخیره‌سازی در Android 11 را مورد بحث قرار می‌دهد، ببینید.

SELINUX_LATEST_CHANGES

شناسه تغییر : 143539591

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

این تغییر باعث می‌شود برنامه‌ها به دامنه untrusted_app_R-targetSDk SELinux دسترسی پیدا کنند. این یکی از تغییرات اساسی در چارچوب سازگاری است که به برنامه‌ها اجازه می‌دهد تا تغییرات دیگری را که توسط targetSdkVersion بسته شده‌اند، بدون تغییر targetSDKVersion برنامه خود تغییر دهند. به همین دلیل، نباید این تغییر را برای برنامه ای که اندروید 11 را هدف قرار می دهد غیرفعال کنید، در غیر این صورت برنامه کار نخواهد کرد.

این تغییر برای برنامه هایی که از شناسه کاربری مشترک استفاده می کنند تأثیری ندارد.

THROW_SECURITY_EXCEPTIONS

شناسه تغییر : 147340954

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

قبل از Android 11، یک SecurityException فقط توسط setEnabled APIها برای خطای مجوز پرتاب می شد. در اندروید 11 این دیگر صادق نیست، و یک SecurityException می‌تواند به هر دلیلی ایجاد شود که هیچ یک از آنها در معرض تماس گیرنده قرار نمی‌گیرد.

برای حفظ رفتار API موجود، اگر برای برنامه‌ای که Android 11 را هدف قرار نمی‌دهد، نقص مجوز قدیمی یا اجرا نشدن بازیگر رخ دهد، این استثنا به یک IllegalStateException که در منبع قبل از Android 11 وجود داشت، وادار می‌شود.

USE_SET_LOCATION_ENABLED

شناسه تغییر : 117835097

حالت پیش‌فرض : برای برنامه‌هایی که Android 11 (سطح API 30) یا بالاتر را هدف قرار می‌دهند فعال است.

برنامه‌های سرپرستی که Android 11 را هدف قرار می‌دهند، دیگر نمی‌توانند از DevicePolicyManager.setSecureSetting(ComponentName, String, String) برای تغییر تنظیمات منسوخ شده Settings.Secure.LOCATION_MODE استفاده کنند. در عوض باید از DevicePolicyManager.setLocationEnabled(ComponentName, boolean) استفاده کنند.