- vừa được xem lúc

Android 11 privacy updates

0 0 22

Người đăng: Hoàng Việt Ngô

Theo Viblo Asia

1. Tìm hiểu khái quát về Scoped Storage (Bộ nhớ phạm vi)

Scoped Storage được ra mắt từ những ngày đầu thử nhiệm trên Android 10. Nó được sinh ra để hạn chế quyền truy cập bộ nhớ (READ_EXTERNAL_STORAGE) từ những nhà phát triển. Sự thay đổi này ban đầu dự kiến áp dụng cho các thiết bị từ Android 10 trở lên , nhưng do sự phản đối từ các nhà phát triển, nên Scoped Storage chỉ được áp dụng cho các ứng dụng Target API 29 (Android 10). Nhưng đến Android 11 thì Scoped Storage đã được áp dụng lại và chưa có kế hoạch thay đổi từ Google.

Những ứng dụng triển khai Scoped Storage chỉ có thể truy cập vào Directory của ứng dụng hay các file mà ứng dụng tạo ra. Bạn sẽ bị hạn chế quyền truy cập với bộ nhớ hệ thống , nhưng với các file trong thư mục ứng dụng của bạn thì có thể truy cập và sửa đổi mà không cần quyền.

Tại sao cần áp dụng Scoped Storage ?

Thay vì các nhà phát triển có thể xin cấp quyền truy cập data system dễ dàng thì Scoped Storage cung cấp những hạn chế nhất định khiến dữ liệu không thể dễ dàng được truy cập. Các nhà phát triển sẽ dùng các storage APIS để truy cập vào những thư mục cần thiết.

2. Android 11 Privacy Updates

1. Storage

App target API 29 vẫn có thể request quyền requestLegacyExternalStorage = true , nhưng khi app target Android 11 , hệ thống sẽ bỏ qua quyền này . Lúc này ứng dụng của bạn phải thực thi Scoped Storage và migrate app data tới các thư mục tương thích với Scoped Storage.

Chú ý : Ứng dụng targets API 30 không thể truy cập các thư mục qua File Path , mà sẽ qua Uri

Media file access

Android 11 cung cấp một số phương thức để xin quyền User giúp truy cập và quản lí Media File dễ dàng hơn .

createWriteRequest()

Cho phép ứng dụng có quyền truy cập ghi vào các nhóm media file nhất định

createFavoriteRequest()

Di chuyển thư mục vào danh sách yêu thích của thiết bị

createTrashRequest()

Di chuyển thư mục vào device'trash , thư mục sẽ bị xóa vĩnh viễn sau 1 khoảng thời gian nhất định. Tuy nhiên ta có thể remove chúng khỏi trash

createDeleteRequest()

Xóa vĩnh viễn thư mục

Syntax sample :

val uriList: List<Uri> = "List of content URIs"
val editPendingIntent = MediaStore.createWriteRequest(contentResolver, uriList)
startIntentSenderForResult(editPendingIntent.intentSender, REQUEST_CODE,
null, 0, 0, 0)

Access to data from other apps

Các ứng dụng target API 30 không thể truy cập vào đường dẫn thư mục của các ứng dụng khác . Kể cả khi các ứng dụng đó target API 27 hoặc thấp hơn.

Access to directories

Bạn không còn dùng action ACTION_OPEN_DOCUMENT_TREE để truy cập vào các thư mục sau :

  • Thư mục gốc của internal storage
  • Thư mục gốc của từng thẻ SD mà nhà cung cấp cho là đáng tin cậy
  • Thư mục Download

2. Permission

One-time permission

Từ Android 11 trở đi , khi ứng dụng yêu cầu xin quyền liên quan tới location, microphone, or camera. Dialog xin quyền sẽ hiển thị thêm option Only this time để chấp nhận quyền sử dụng 1 lần

Auto-reset permissions from unused apps

Từ Android 11 trở lên , hệ thống bảo vệ dữ liệu người dùng sẽ tự động reset lại những quyền mà trước đó đã được cấp khi ứng dụng không được sử dụng trong vài tháng.

Permission dialog visibility

Từ Android 11 trở đi , khi người dùng click "Deny" trong dialog xin quyền nhiều hơn một lần trong suốt thời gian ứng dụng được cài đặt , hành động này sẽ được ngầm hiểu là "Don't ask again" và dialog sẽ không hiển thị những lần tiếp theo nữa.

3. Phone numbers

Android 11 đã thay đổi những quyền liên quan tới phone , những quyền được sử dụng để truy cập số điện thoại Từ Android 11 trở đi , để truy cập quyền Phone Number , ứng dụng phải xin quyền READ_PHONE_NUMBERS thay vì quyền READ_PHONE_STATE

  • Phương thức getLine1Number() xuất hiện ở cả 2 class TelephonyManagerTelecomManager
  • Phương thức getMsisdn() không được hỗ trợ ở class TelephonyManager

Bình luận

Bài viết tương tự

- vừa được xem lúc

Create Certificates, Identifiers & Profiles App IOS

Mở đầu. Xin chào các bạn hôm này mình sẽ giới thiệu cho các bạn một cách tạo certificates, identifiers & profiles với tài khoản Apple Developer. Có tài khoản Apple Developer. Ai chưa có thì không cần đọc tiếp nha :.

0 0 36

- vừa được xem lúc

Chương 5 Object oriented programming

Chương 5 Object oriented programming. Tôi lần đầu tiên được giới thiệu về lập trình hướng đối tượng ở trường cao đẳng nơi tôi đã có một giới thiệu tóm tắc về c++.

0 0 24

- vừa được xem lúc

Hướng dẫn tạo link tracking nguồn cài đặt cho mobile app (xác định nguồn cài đặt cho mobile app)

Giới thiệu. Bạn đang chạy quá nhiều campaign cho ứng dụng mobile từ các mạng xã hội: facebook, twitter, ... các chiến dịch offline cũng như các chiến dịch online của bên thứ 3. Bạn không thể xác định được nguồn nào mang cho mình lượng install cao nhất. Vì nếu dùng shortlink thì chỉ đo được lượt clic

0 0 28

- vừa được xem lúc

SwiftUi: Bắt đầu từ những điều căn bản nhất. Phần 1

Trong bài này, bạn sẽ được tìm hiểu về việc tạo ra giao diện bằng việc khai báo và tuỳ chỉnh views, cách sử dụng các biến trạng thái để cập nhật giao diện thay vì dùng code. Tập sử dụng tính năng new preview và live preview, những trải nghiệm thú vị khi làm việc cùng với code và WYSIWYG layout.

0 0 57

- vừa được xem lúc

Những điều khác nhau cần biết giữa thiết kế ứng dụng Android và ứng dung iOS

Để tạo ra ứng dụng có trải nghiệm tốt nhất, tương thích với dòng thiết bị, bạn nên ghi nhớ sự khác biệt giữa 2 nền tảng iOS và Android. Các ứng dụng này không chỉ khác nhau ở phần trông như thế nào, chúng cũng khác nhau về cấu trúc và luồng ứng dụng.

0 0 26

- vừa được xem lúc

Những khó khăn khi làm dự án maintain ( dưới góc nhìn của một React Native Developer)

Đi làm một vài năm ở công ty outsource, minh thấy hầu như các anh em đều khá e ngại với các dự án maintain, nhất là thuộc hàng code "siêu thối", spec thuộc loại "siêu to khổng lồ ",... Và mình cũng thế, mình cũng đang "theo đuổi" một chú em với "chức năng siêu to kh

0 0 309