Trang này mô tả từng thay đổi về hành vi ảnh hưởng đến ứng dụng được thêm vào khung tương thích trong Android 11 (cấp độ API 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 để thử nghiệm và gỡ lỗi ứng dụng khi bạn chuẩn bị nhắm đến Android 11.
ADD_CONTENT_OBSERVER_FLAGS
Mã thay đổi: 150939131
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứng dụng nhắm đến Android 11, có một API công khai mới bị nạp chồng
onChange(boolean, Uri, int)
bao gồm đối số flags là số nguyên.
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 bị nạp chồng onChange() không phải SDK bao gồm đối số userId là số nguyên.
ADMIN_APP_PASSWORD_COMPLEXITY
Mã thay đổi: 123562444
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứng dụng quản trị nhắm đến Android 11, hãy gửi 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 được chỉ định hiện tại. Ví dụ: khi chất lượng mật khẩu được đặt thành
DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED,
một ứ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, ứng dụng trước tiên phải gọi phương thức
setPasswordQuality()
rồi mới gọi phương thức
setPasswordMinimumLength().
Ngoài ra, khi một ứng dụng quản trị nhắm đến Android 11 giảm chất lượng mật khẩu, 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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Các ứng dụng nhắm đến Android 11 không còn có thể 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 khác.
Để tìm hiểu thêm, hãy xem bài viết Quyền truy cập vào các 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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứng dụng nhắm đến Android 11, việc truy cập vào cơ sở dữ liệu APN hiện
yêu cầu Manifest.permission.WRITE_APN_SETTINGS
quyền.
Để tìm hiểu thêm về thay đổi này, hãy xem bài viết Quyền truy cập bị hạn chế để đọc 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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Giờ đây, các ứng dụng phải cung cấp 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 thảo luận về những thay đổi về quyền riêng tư liên quan đến thông tin vị trí trong Android 11.
CALLBACK_ON_CLEAR_CHANGE
Mã thay đổi: 119147584
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Bất cứ khi nào
Editor.clear
được gọi, một lệnh gọi lại sẽ được thực hiện đến
OnSharedPreferenceChangeListener.onSharedPreferenceChanged
bằng khoá null.
Để tìm hiểu thêm về thay đổi này, hãy xem bài viết Các thay đổi về lệnh gọi lại cho OnSharedPreferenceChangeListener.
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
Mã thay đổi: 130595455
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Các mã lỗi hiện được mở rộng cho updateAvailableNetworks(List,
Executor,
Consumer)
và setPreferredOpportunisticDataSubscription(int, boolean, Executor,
Consumer).
CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
Mã thay đổi: 148180766
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 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 thay đổi này, hệ thống đã gọi lại cho op đã chuyển đổi. Sau thay đổi, hệ thống sẽ gọi lại cho op được yêu cầu thực tế hoặc tất cả các op đã chuyển đổi nếu không có op 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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứ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 tính năng của camera và micrô trong khi sử dụng khi
R.attr.foregroundServiceType
được định cấu hình lần lượt là
ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
và
ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
trong tệp kê khai. Trên các phiên bản Android cũ, các dịch vụ trên nền trước tự động nhận được các tính năng của camera và micrô.
Để tìm hiểu thêm về thay đổi này, hãy xem Các loại dịch vụ trên nền trước trong Android 11.
CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
Mã thay đổi: 128611929
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Các ứng dụng không còn có thể đăng thông báo tuỳ chỉnh ở chế độ nền. Tuy nhiên, các ứng dụng vẫn có thể
đăng thông báo bằng phương thức Toast.makeText(Context, CharSequence,
int)
và các biến thể của phương thức này khi ở chế độ nền.
Để tìm hiểu thêm về thay đổi này, hãy xem bài viết Chặn các khung hiển thị thông báo ngắn tuỳ chỉnh.
CHANGE_RESTRICT_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.
Ý đị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 hướng 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 điều hướng đến một màn hình nơi họ có thể quản lý tất cả các ứng dụng đã yêu cầu quyền.
CHANGE_TEXT_TOASTS_IN_THE_SYSTEM
Mã thay đổi: 147798919
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Thông báo dạng văn bản hiện được SystemUI hiển thị thay vì trong ứng dụng. Điều này giúp ngăn các ứng dụng lách luật hạn chế về việc đăng thông báo 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.
Tất cả các ứng dụng nhắm đến Android 11 hiện đều sử dụng bộ nhớ có giới hạn theo mặc định và không còn có 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 của mình mà không cần 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, 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ề những 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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứng dụng nhắm đến Android 11, hệ thống hiện gửi lỗi nếu
của bộ lọc ý định action hoặc
category là một chuỗi trống. Một lỗi trong nền tảng trước Android 11 cho phép trường hợp này truyền qua mà không gửi lỗi. Xin lưu ý rằng trường hợp này không bao gồm các trường hợp khi thuộc tính là rỗng hoặc bị thiếu, vì trường hợp đó luôn gửi lỗi.
FILTER_APPLICATION_QUERY
Mã thay đổi: 135549675
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Giờ đây, 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ể nhận được 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 về quyền riêng tư đối với khả năng hiển thị gói.
FORCE_ENABLE_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.
Tất cả các ứng dụng nhắm đến Android 11 hiện đều sử dụng bộ nhớ có giới hạn theo mặc định và không còn có 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 (cấp độ API 29) trở xuống, bạn có thể kiểm thử ứng dụng của mình bằng bộ nhớ có giới hạn, bất kể phiên bản SDK mục tiêu và giá trị cờ kê khai của ứng dụng, bằng cách bậ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ề những 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 các ứng dụng nhắm đến Android 11 (cấp độ API 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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Để kiểm tra phiên bản SDK cho
getDataState().
GET_PROVIDER_SECURITY_EXCEPTIONS
Mã thay đổi: 150935354
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứng dụng nhắm đến Android 11 (API cấp 30) trở lên,
getProvider(String)
không còn gửi bất kỳ ngoại lệ bảo mật nào.
GET_TARGET_SDK_VERSION_CODE_CHANGE
Mã thay đổi: 145147528
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 10 (cấp độ API 29) hoặc cao hơ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 hướng dẫn về GWP-ASan.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
Mã thay đổi: 149997251
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 10 (cấp độ API 29) hoặc cao hơn.
Đối với các ứ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ả các giao diện không phải SDK thuộc danh sách max-target-p (greylist-max-p)
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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứ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ả các giao diện không phải SDK thuộc danh sách max-target-q (greylist-max-q)
cho Android 11 (API cấp 30).
Để tìm hiểu thêm về thay đổi này, hãy xem bài viết 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 các ứng dụng nhắm đến Android 10 (cấp độ API 29) hoặc cao hơn.
Để kiểm tra phiên bản SDK cho TelephonyManager.listen(PhoneStateListener,
int).
MISSING_APP_TAG
Mã thay đổi: 150776642
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứng dụng nhắm đến Android 11, lỗi hiện được gửi khi tệp kê khai của ứng dụng thiếu thẻ application
hoặc instrumentation.
NATIVE_HEAP_POINTER_TAGGING
Mã thay đổi: 135754954
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứng dụng nhắm đến Android 11, việc 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ỏ 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 các ứng dụng nhắm đến Android 11, hiện có một 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ý thông qua TelephonyManager.listen(PhoneStateListener, int).
Giới hạn mặc định là 50, có thể thay đổi bằng các bản cập nhật cấu hình thiết bị từ xa.
Giới hạn này được thực thi bằng cách sử dụng một
IllegalStateException
do TelephonyManager.listen(PhoneStateListener, int) gửi 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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Các ứng dụng nhắm đến Android 11 không còn có thể sử dụng thêm một lớp phản ánh để truy cập vào các giao diện không phải SDK bị hạn chế.
PROCESS_CAPABILITY_CHANGE_ID
Mã thay đổi: 136274596
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứng dụng nhắm đến Android 11, giờ đây, bạn có thể sử dụng cờ
Context.BIND_INCLUDE_CAPABILITIES
để truyền các tính năng trong khi sử dụng từ quy trình máy khách đến một
dịch vụ được liên kết.
REMOVE_ANDROID_TEST_BASE
Mã thay đổi: 133396946
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Đối với các ứng dụng nhắm đến Android 11, thư viện android.test.base đã 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 từ thư viện android.test.base).
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
Mã thay đổi: 136293963
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 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 dịch vụ hỗ trợ tiếp cận.
Nếu không, cờ sẽ bị bỏ qua.
Để tìm hiểu thêm về thay đổi này, hãy xem bài viết Khai báo việc sử dụng nút hỗ trợ tiếp cận trong tệp siêu dữ liệu.
RESOURCES_ARSC_COMPRESSED
Mã thay đổi: 132742131
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Bạn không thể cài đặt các ứng dụng nhắm đến Android 11 (cấp độ API 30) nếu chúng 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 bài viết Tệp tài nguyên đã nén.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
Mã thay đổi: 141600225
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 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 không còn có thể
truy cập vào một số thư mục bằng các thao tác theo ý định
ACTION_OPEN_DOCUMENT
và
ACTION_OPEN_DOCUMENT_TREE
nữa. Để 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 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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Thay đổi này kiểm soát quyền truy cập của ứng dụng vào miền SELinux untrusted_app_R-targetSDk.
Đây là một trong những thay đổi cơ bản trong khung tương thích cho phép các ứng dụng bật/tắt các thay đổi khác được kiểm soát bởi targetSdkVersion 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 cho 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 có hiệu lực đối với các ứng dụng sử dụng mã người dùng được chia sẻ.
THROW_SECURITY_EXCEPTIONS
Mã thay đổi: 147340954
Trạng thái mặc định: Bật đối với các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Trước Android 11, một SecurityException
sẽ chỉ được gửi bởi các API setEnabled cho lỗi quyền. Trong Android 11, điều này không còn đúng nữa và SecurityException có thể được gửi vì nhiều lý do, không có lý do nào được hiển thị cho trình gọi.
Để duy trì hành vi API hiện có, nếu lỗi 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ì ngoại lệ sẽ bị ép 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 các ứng dụng nhắm đến Android 11 (cấp độ API 30) trở lên.
Các ứng dụng quản trị nhắm đến Android 11 không còn có thể sử dụng
DevicePolicyManager.setSecureSetting(ComponentName, String, String)
để thay đổi chế độ cài đặt Settings.Secure.LOCATION_MODE
không dùng nữa. Thay vào đó, các ứng dụng này nên sử dụng DevicePolicyManager.setLocationEnabled(ComponentName, boolean).