Trình cung cấp nội dung có thể giúp một ứng dụng quản lý quyền truy cập vào dữ liệu do chính ứng dụng đó lưu trữ hoặc được các ứng dụng khác lưu trữ, đồng thời đưa ra cách thức để chia sẻ dữ liệu với các ứng dụng khác. Các mô-đun này đóng gói dữ liệu và cung cấp cơ chế để xác định việc bảo mật dữ liệu. Trình cung cấp nội dung là giao diện tiêu chuẩn kết nối dữ liệu trong một quy trình với mã chạy trong một quy trình khác.
Việc triển khai trình cung cấp nội dung có nhiều lợi ích. Quan trọng nhất là bạn có thể định cấu hình một trình cung cấp nội dung để cho phép các ứng dụng khác truy cập và sửa đổi dữ liệu ứng dụng của bạn một cách an toàn, như minh hoạ trong hình 1.
![Sơ đồ tổng quan về cách nhà cung cấp nội dung quản lý quyền truy cập vào bộ nhớ.](https://developer.android.com/static/guide/topics/providers/images/content-provider-overview.png?authuser=9&hl=vi)
Hình 1. Sơ đồ tổng quan về cách nhà cung cấp nội dung quản lý quyền truy cập vào bộ nhớ.
Sử dụng nhà cung cấp nội dung nếu bạn định chia sẻ dữ liệu. Nếu không định chia sẻ dữ liệu, bạn không nhất thiết phải sử dụng chúng. Tuy nhiên, bạn có thể chọn chia sẻ dữ liệu vì chúng cung cấp giá trị trừu tượng cho phép bạn sửa đổi cách triển khai bộ nhớ dữ liệu ứng dụng mà không ảnh hưởng đến các ứng dụng khác dựa vào quyền truy cập vào dữ liệu của bạn.
Trong trường hợp này, chỉ trình cung cấp nội dung của bạn bị ảnh hưởng chứ không phải các ứng dụng truy cập vào trình cung cấp đó. Ví dụ: bạn có thể hoán đổi cơ sở dữ liệu SQLite cho bộ nhớ thay thế, như minh hoạ trong hình 2.
![Hình minh hoạ di chuyển bộ nhớ của nhà cung cấp nội dung.](https://developer.android.com/static/guide/topics/providers/images/content-provider-migration.png?authuser=9&hl=vi)
Hình 2. Hình minh hoạ di chuyển bộ nhớ của nhà cung cấp nội dung.
Một số lớp khác dựa vào lớp ContentProvider
:
Nếu sử dụng bất kỳ lớp nào trong số này, bạn cần triển khai một trình cung cấp nội dung trong ứng dụng của mình. Khi làm việc với khung bộ điều hợp đồng bộ hoá, bạn cũng có thể tạo một trình cung cấp nội dung mã giả lập thay thế. Để biết thêm thông tin, hãy xem phần Tạo trình cung cấp nội dung giả lập. Ngoài ra, bạn cần có trình cung cấp nội dung của riêng mình trong các trường hợp sau:
- Để triển khai các đề xuất tìm kiếm tuỳ chỉnh trong ứng dụng của bạn.
- Để hiển thị dữ liệu ứng dụng của bạn cho các tiện ích.
- Để sao chép và dán dữ liệu hoặc tệp phức tạp từ ứng dụng của bạn sang các ứng dụng khác.
Khung Android bao gồm các trình cung cấp nội dung quản lý dữ liệu như âm thanh, video, hình ảnh và thông tin liên hệ cá nhân. Bạn có thể thấy một số gói được liệt kê trong tài liệu tham khảo cho gói android.provider
. Với một số hạn chế, mọi ứng dụng Android đều có thể truy cập vào các trình cung cấp này.
Bạn có thể sử dụng trình cung cấp nội dung để quản lý quyền truy cập vào nhiều nguồn lưu trữ dữ liệu, bao gồm cả dữ liệu có cấu trúc (chẳng hạn như cơ sở dữ liệu quan hệ SQLite) hoặc dữ liệu không có cấu trúc như tệp hình ảnh. Để biết thêm thông tin về các loại bộ nhớ có sẵn trên Android, hãy xem Tổng quan về lưu trữ dữ liệu và tệp và Thiết kế bộ nhớ dữ liệu.
Ưu điểm của trình cung cấp nội dung
Nhà cung cấp nội dung cung cấp quyền kiểm soát chi tiết đối với các quyền truy cập vào dữ liệu. Bạn có thể chọn chỉ cho phép một trình cung cấp nội dung có trong ứng dụng của mình, cấp quyền tổng quát để truy cập vào dữ liệu từ các ứng dụng khác hoặc định cấu hình các quyền đọc và ghi dữ liệu khác nhau. Để biết thêm thông tin về cách sử dụng trình cung cấp nội dung một cách an toàn, hãy xem các mẹo bảo mật khi lưu trữ dữ liệu và Các quyền của Trình cung cấp nội dung.
Bạn có thể sử dụng trình cung cấp nội dung để loại bỏ thông tin chi tiết về việc truy cập vào nhiều nguồn dữ liệu trong ứng dụng của mình. Ví dụ: ứng dụng của bạn có thể lưu trữ các bản ghi có cấu trúc trong cơ sở dữ liệu SQLite, cũng như các tệp video và âm thanh. Bạn có thể sử dụng một trình cung cấp nội dung để truy cập vào tất cả dữ liệu này.
Ngoài ra, các đối tượng CursorLoader
dựa vào trình cung cấp nội dung để chạy các truy vấn không đồng bộ và sau đó trả về kết quả cho lớp giao diện người dùng trong ứng dụng của bạn. Để biết thêm thông tin về cách sử dụng CursorLoader
để tải dữ liệu ở chế độ nền, hãy xem bài viết
Trình tải.
Các chủ đề sau đây sẽ mô tả chi tiết hơn về trình cung cấp nội dung:
- Thông tin cơ bản về trình cung cấp nội dung
- Cách truy cập và cập nhật dữ liệu bằng trình cung cấp nội dung hiện có.
- Tạo một trình cung cấp nội dung
- Cách thiết kế và triển khai trình cung cấp nội dung của riêng bạn.
- Tổng quan về trình cung cấp Lịch
- Cách truy cập vào Trình cung cấp lịch trên nền tảng Android.
- Trình cung cấp danh bạ
- Cách truy cập vào Trình cung cấp danh bạ trên nền tảng Android.