Các thay đổi về khung tương thích (Android Android 11)

Trang này mô tả từng thay đổi về hành vi tác động đến ứng dụng đã được thêm vào khung tương thích trong Android 11 (API cấp 30). Hãy sử dụng danh sách này cùng với Tuỳ chọn cho nhà phát triển và lệnh ADB để kiểm thử và gỡ lỗi ứng dụng khi bạn chuẩn bị nhắm đến Android 11.

THÊM_NỘI DUNG_OBSERVER_FLAGS

Mã thay đổi: 150939131

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với ứng dụng nhắm đến Android 11, có một phương thức nạp chồng API công khai mới onChange(boolean, Uri, int) bao gồm đối số số nguyên flags.

Phương thức mới này là một giải pháp thay thế SDK công khai cho các ứng dụng sử dụng phương thức nạp chồng onChange() không phải SDK, bao gồm một đối số số nguyên userId.

ADMIN_APP_ MẬT KHẨU_PSTITY

Mã thay đổi: 123562444

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với các ứng dụng quản trị nhắm mục tiêu Android 11, hãy báo lỗi bất cứ khi nào một ứng dụng đặt yêu cầu về mật khẩu không liên quan đến chất lượng mật khẩu hiện được chỉ định. Ví dụ: khi chất lượng mật khẩu được đặt thành DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, ứng dụng sẽ không thể đặt độ dài mật khẩu tối thiểu. Trong trường hợp này, trước khi cố gắng đặt độ dài mật khẩu tối thiểu, trước tiên, ứng dụng phải gọi phương thức setPasswordQuality() rồi chỉ gọi phương thức setPasswordMinimumLength().

Ngoài ra, khi một ứng dụng quản trị nhắm đến Android 11 làm giảm chất lượng mật khẩu, thì mọi yêu cầu hiện có về mật khẩu không còn áp dụng sẽ được đặt lại về giá trị mặc định.

APP_DATA_DIRECTORY_ISOLATION

Mã thay đổi: 143937733

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Các ứng dụng nhắm đến Android 11 không thể tiếp tục truy cập vào các tệp trong thư mục dữ liệu riêng tư của bất kỳ ứng dụng nào, bất kể phiên bản SDK mục tiêu của ứng dụng đó là gì.

Để tìm hiểu thêm, hãy xem bài viết Quyền truy cập vào thư mục riêng tư.

APN_READING_PERMISSION_CHANGE_ID

Mã thay đổi: 124107808

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với các ứng dụng nhắm mục tiêu Android 11, việc truy cập vào cơ sở dữ liệu APN hiện yêu cầu quyền Manifest.permission.WRITE_APN_SETTINGS.

Để tìm hiểu thêm về thay đổi này, hãy xem phần Hạn chế quyền đọc đối với cơ sở dữ liệu APN.

BACKGROUND_RATIONALE_CHANGE_ID

Mã thay đổi: 147316723

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Giờ đây, ứng dụng phải đưa ra lý do hợp lệ mỗi khi yêu cầu truy cập vào thông tin vị trí của thiết bị ở chế độ nền.

Để tìm hiểu thêm về thay đổi này, hãy xem hướng dẫn về cách Truy cập thông tin vị trí ở chế độ nền trong Android 11. Hướng dẫn này thảo luận về các thay đổi về quyền riêng tư liên quan đến thông tin vị trí trong Android 11.

Hàm CALLBACK_ON_ACTIVE_CHANGE

Mã thay đổi: 119147584

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Bất cứ khi nào Editor.clear được gọi, một lệnh gọi lại giờ đây sẽ được thực hiện tới OnSharedPreferenceChangeListener.onSharedPreferenceChanged bằng khoá null.

Để tìm hiểu thêm về thay đổi này, hãy xem phần Các thay đổi về lệnh gọi lại đối với OnSharedPreferencesChangeListener.

CALLBACK_ON_MORE_ERROR_CODE_CHANGE

Mã thay đổi: 130595455

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Mã lỗi hiện đã được mở rộng cho updateAvailableNetworks(List, Executor, Consumer)setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer).

CALL_BACK_ON_CHANGED_LISTENER_WITH_TransitionED_OP_CHANGE

Mã thay đổi: 148180766

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đây là một thay đổi nhỏ về hành vi đối với startWatchingMode(String, String, AppOpsManager.OnOpChangedListener). Trước khi có sự thay đổi này, hệ thống sẽ gọi lại cho hoạt động được chuyển. Sau khi có sự thay đổi, hệ thống sẽ gọi lại cho hoạt động đã thực sự được yêu cầu hoặc tất cả hoạt động đã chuyển đổi nếu không có hoạt động nào được chỉ định.

CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID

Mã thay đổi: 136219221

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với ứng dụng nhắm đến Android 11, các dịch vụ trên nền trước chỉ nhận được các chức năng của máy ảnh và micrô khi đang sử dụng, nếu R.attr.foregroundServiceType được định cấu hình là ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERAServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE tương ứng trong tệp kê khai. Trên các phiên bản Android cũ hơn, các dịch vụ trên nền trước sẽ tự động nhận được các tính năng của máy ảnh và micrô.

Để tìm hiểu thêm về thay đổi này, hãy xem bài viết Các loại dịch vụ trên nền trước trong Android 11.

CHANGE_NỀN_TUỲ CHỈNH_TOAST_BLOCK

Mã thay đổi: 128611929

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Các ứng dụng không thể đăng thông báo ngắn tuỳ chỉnh trong nền nữa. Tuy nhiên, các ứng dụng vẫn có thể đăng thông báo ngắn bằng phương thức Toast.makeText(Context, CharSequence, int) và các biến thể của phương thức đó khi ở chế độ nền.

Để tìm hiểu thêm về thay đổi này, hãy xem phần Các chế độ xem thông báo ngắn tuỳ chỉnh bị chặn.

THAY ĐỔI_ HẠN_SAW_INTENT

Mã thay đổi: 135920175

Trạng thái mặc định: Không thể bật/tắt thay đổi này. Chỉ có khung tương thích ghi lại nhật ký này.

Các ý định sử dụng thao tác android.settings.MANAGE_APP_OVERLAY_PERMISSION và lược đồ URI dữ liệu package không còn đưa người dùng đến màn hình dành riêng cho ứng dụng để quản lý quyền được liên kết nữa. Thay vào đó, người dùng được chuyển đến một màn hình để họ có thể quản lý mọi ứng dụng đã yêu cầu cấp quyền.

CHANGE_TEXT_TOASTS_IN_THE_SYSTEM

Mã thay đổi: 147798919

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Hiện tại, thông báo ngắn dạng văn bản sẽ được SystemUI hiển thị thay vì trong ứng dụng. Điều này ngăn các ứng dụng tránh né các hạn chế về việc đăng thông báo ngắn tuỳ chỉnh ở chế độ nền.

DEFAULT_SCOPED_STORAGE

Mã thay đổi: 149924527

Trạng thái mặc định: Bật đối với tất cả ứng dụng.

Theo mặc định, tất cả ứng dụng nhắm đến Android 11 hiện đều sử dụng bộ nhớ có giới hạn và không thể chọn không sử dụng bộ nhớ có giới hạn nữa.

Tuy nhiên, bạn có thể kiểm thử ứng dụng mà không cần bộ nhớ có giới hạn, bất kể phiên bản SDK mục tiêu của ứng dụng và giá trị cờ tệp kê khai là gì, bằng cách tắt thay đổi này.

Để tìm hiểu thêm về những thay đổi đối với bộ nhớ có giới hạn trong Android 11, hãy xem phần Bộ nhớ có giới hạn trên trang về các thay đổi đối với bộ nhớ Android trong Android 11.

EMPTY_INTENT_ACTION_CATEGORY

Mã thay đổi: 151163173

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với các ứng dụng nhắm mục tiêu Android 11, hệ thống sẽ gửi lỗi nếu action hoặc category của bộ lọc ý định là một chuỗi trống. Một lỗi trong nền tảng trước khi Android 11 cho phép trường hợp này được thông qua mà không gặp lỗi. Xin lưu ý rằng điều này không bao gồm các trường hợp khi thuộc tính rỗng hoặc bị thiếu, vì việc này luôn tạo ra lỗi.

FILTER_APPLICATION_QUERY

Mã thay đổi: 135549675

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Hiện tại, các ứng dụng cần khai báo các gói và ý định mà chúng dự định sử dụng trước khi có thể lấy thông tin chi tiết về các ứng dụng khác trên thiết bị. Bạn phải khai báo như vậy bằng thẻ <queries> trong tệp kê khai của ứng dụng.

Để tìm hiểu thêm về cách truy vấn và tương tác với các ứng dụng đã cài đặt khác trong Android 11, hãy xem trang quyền riêng tư về chế độ hiển thị gói.

FORCE_BẬT_SCOPED_STORAGE

Mã thay đổi: Giá trị: 132649864

Trạng thái mặc định: Tắt đối với tất cả ứng dụng.

Theo mặc định, tất cả ứng dụng nhắm đến Android 11 hiện đều sử dụng bộ nhớ có giới hạn và không thể chọn không sử dụng bộ nhớ có giới hạn nữa.

Tuy nhiên, nếu ứng dụng của bạn vẫn nhắm đến Android 10 (API cấp 29) trở xuống, thì bạn có thể kiểm thử ứng dụng với bộ nhớ có giới hạn, bất kể phiên bản SDK mục tiêu và giá trị cờ tệp kê khai của ứng dụng là gì, bằng cách bật/tắt thay đổi này.

Để tìm hiểu thêm về những thay đổi đối với bộ nhớ có giới hạn trong Android 11, hãy xem phần Bộ nhớ có giới hạn trên trang về các thay đổi đối với bộ nhớ Android trong Android 11.

GET_DATA_CONNECTION_STATE_R_VERSION

Mã thay đổi: 148535736

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Để kiểm tra phiên bản SDK cho PreciseDataConnectionState#getDataConnectionState.

GET_DATA_STATE_R_VERSION

Mã thay đổi: 148534348

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Để kiểm tra phiên bản SDK cho getDataState().

GET_SHARED_Security_EXCEPTIONS

Mã thay đổi: 150935354

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với ứng dụng nhắm mục tiêu Android 11 (API cấp 30) trở lên, getProvider(String) không còn gửi bất kỳ trường hợp ngoại lệ bảo mật nào nữa.

GET_TARGET_SDK_VERSION_CODE_CHANGE

Mã thay đổi: 145147528

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 10 (API cấp 29) trở lên.

Để kiểm tra phiên bản SDK cho phương thức SmsManager.sendResolverResult().

GWP_ASAN

Mã thay đổi: 135634846

Trạng thái mặc định: Tắt đối với tất cả ứng dụng.

Bật tính năng lấy mẫu để phát hiện lỗi bộ nhớ gốc trong ứng dụng.

Để tìm hiểu thêm về thay đổi này, hãy xem bài viết Hướng dẫn về GWP-ASan.

ẨN_MAXTARGETSDK_P_HIDDEN_APIS

Mã thay đổi: 149997251

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 10 (API cấp 29) trở lên.

Đối với ứng dụng nhắm đến Android 10 (API cấp 29) trở lên, hãy xoá quyền truy cập vào tất cả giao diện không phải SDK thuộc danh sách max-target-p (greylist-max-p) dành cho Android 10 (API cấp 29).

Hide_MAXTARGETSDK_Q_HIDDEN_APIS

Mã thay đổi: 149994052

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với ứng dụng nhắm đến Android 11 (API cấp 30) trở lên, hãy xoá quyền truy cập vào tất cả giao diện không phải SDK thuộc danh sách max-target-q (greylist-max-q) dành cho Android 11 (API cấp 30).

Để tìm hiểu thêm về thay đổi này, hãy xem các giao diện không phải SDK hiện đã bị chặn trong Android 11.

LISTEN_CODE_CHANGE

Mã thay đổi: 147600208

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 10 (API cấp 29) trở lên.

Để kiểm tra phiên bản SDK của TelephonyManager.listen(PhoneStateListener, int).

THIẾU_APP_TAG

Mã thay đổi: 150776642

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với ứng dụng nhắm mục tiêu Android 11, hệ thống sẽ báo lỗi khi tệp kê khai của ứng dụng thiếu thẻ application hoặc instrumentation.

GỐC_HEAP_POINTER_TAGGING

Mã thay đổi: 135754954

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với ứng dụng nhắm mục tiêu Android 11, các quá trình phân bổ vùng nhớ khối xếp gốc hiện có một thẻ khác 0 trong byte quan trọng nhất.

Để tìm hiểu thêm, hãy xem bài viết Gắn thẻ con trỏ trên vùng nhớ khối xếp.

PHONE_STATE_LISTENER_LIMIT_CHANGE_ID

Mã thay đổi: 150880553

Trạng thái mặc định: Bật đối với tất cả ứng dụng.

Đối với ứng dụng nhắm mục tiêu đến Android 11, hiện đã có giới hạn về số lượng đối tượng PhoneStateListener mà bất kỳ quy trình nào cũng có thể đăng ký qua TelephonyManager.listen(PhoneStateListener, int). Giới hạn mặc định là 50 và có thể thay đổi khi cấu hình thiết bị từ xa cập nhật. Giới hạn này được thực thi bằng cách sử dụng IllegalStateException do TelephonyManager.listen(PhoneStateListener, int) đưa ra khi quy trình vi phạm cố gắng đăng ký quá nhiều trình nghe.

PREVENT_META_REFLECTION_BLACKLIST_ACCESS

Mã thay đổi: 142365358

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Các ứng dụng nhắm đến Android 11 không thể dùng thêm một lớp phản chiếu để truy cập vào giao diện không phải SDK bị hạn chế nữa.

PROCESS_CAPABILITY_CHANGE_ID

Mã thay đổi: 136274596

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với các ứng dụng nhắm mục tiêu Android 11, giờ đây, bạn có thể dùng cờ Context.BIND_INCLUDE_CAPABILITIES để truyền các tính năng từ quy trình ứng dụng khi đang sử dụng sang dịch vụ ràng buộc.

REMOVE_ANDROID_TEST_BASE

Mã thay đổi: 133396946

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với các ứng dụng nhắm đến Android 11, thư viện android.test.base sẽ bị xoá nếu ứng dụng không phụ thuộc vào android.test.runner (vì thư viện này phụ thuộc vào các lớp trong thư viện android.test.base).

REQUEST_ACCESSIBILITY_NÚT_CHANGE

Mã thay đổi: 136293963

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Đối với các dịch vụ hỗ trợ tiếp cận nhắm đến Android 11, giờ đây bạn phải chỉ định cờ FLAG_REQUEST_ACCESSIBILITY_BUTTON trong tệp siêu dữ liệu của dịch vụ hỗ trợ tiếp cận. Nếu không, cờ này sẽ bị bỏ qua.

Để tìm hiểu thêm về thay đổi này, hãy xem nội dung Khai báo việc sử dụng nút hỗ trợ tiếp cận trong tệp siêu dữ liệu.

tài nguyên S_ARSC_COMPRESSED

Mã thay đổi: 132742131

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Bạn không thể cài đặt các ứng dụng nhắm mục tiêu Android 11 (API cấp 30) nếu các ứng dụng đó có chứa tệp resources.arsc nén hoặc nếu tệp này không được căn chỉnh trên ranh giới 4 byte.

Để tìm hiểu thêm về thay đổi này, hãy xem phần Tệp tài nguyên được nén.

quyền_STORAGE_ACCESS_FRAMEWORK

Mã thay đổi: 141600225

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Nếu ứng dụng của bạn nhắm đến Android 11 và sử dụng Khung truy cập bộ nhớ (SAF), thì bạn sẽ không truy cập được vào một số thư mục nhất định bằng thao tác theo ý định ACTION_OPEN_DOCUMENTACTION_OPEN_DOCUMENT_TREE. Để tìm hiểu thêm về những thay đổi này, hãy xem phần Các hạn chế về quyền truy cập vào tài liệu trên trang thảo luận về các bản cập nhật về quyền riêng tư liên quan đến bộ nhớ trong Android 11.

SELINUX_LATEST_CHANGES

Mã thay đổi: 143539591

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Thay đổi này không cho phép các ứng dụng truy cập vào miền untrusted_app_R-targetSDk SELinux. Đây là một trong những thay đổi cơ bản trong khung tương thích cho phép ứng dụng bật/tắt các thay đổi khác do targetSdkVersion kiểm soát mà không cần thay đổi targetSDKVersion của ứng dụng. Vì lý do này, bạn không nên tắt thay đổi này đối với một ứng dụng nhắm đến Android 11, nếu không ứng dụng đó sẽ không hoạt động.

Thay đổi này không ảnh hưởng đến các ứng dụng sử dụng chung mã nhận dạng người dùng.

THROW_security_EXCEPTIONS

Mã thay đổi: 147340954

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Trước Android 11, SecurityException sẽ chỉ được các API setEnabled gửi vì lỗi quyền. Trong Android 11, điều này không còn đúng nữa và có thể gửi SecurityException vì nhiều lý do mà không có lý do nào trong số đó hiển thị với phương thức gọi.

Để duy trì hành vi hiện có của API, nếu lỗi thực thi quyền cũ hoặc lỗi thực thi tác nhân xảy ra đối với một ứng dụng không nhắm đến Android 11, thì trường hợp ngoại lệ sẽ được buộc thành một IllegalStateException tồn tại trong nguồn trước Android 11.

USE_SET_LOCATION_ENABLED

Mã thay đổi: 117835097

Trạng thái mặc định: Bật đối với những ứng dụng nhắm đến Android 11 (API cấp 30) trở lên.

Các ứng dụng quản trị nhắm đến Android 11 sẽ không thể dùng DevicePolicyManager.setSecureSetting(ComponentName, String, String) để thay đổi chế độ cài đặt Settings.Secure.LOCATION_MODE đã ngừng hoạt động. Thay vào đó, chúng nên sử dụng DevicePolicyManager.setLocationEnabled(ComponentName, boolean).