2 Tìm hiều và sử dụng Content Provider:
2.4.2 Xây dựng Content Provider:
Để xây dựng một Content Provider cho ứng dụng của mình bạn cần hiện thực và kế thừa từ một lớp có sẵn là contentProvider trong Android.
Override tất cả các phương thức sau:
o onCreate(): khởi tạo một ứng dụng được bạn cung cấp. Hệ thống Android gọi phương thức này ngay sau khi nó tạo ra ứng dụng được bạn cung cấp. Chú ý rằng, ứng dụng được bạn cung cấp sẽ không được tạo ra cho đến khi có một đối tượng
ContentResolver được truy cập.
o getType(): trả về định dạng MIME tương ứng với nội dung của một URI. Phương thức này sẽ được nói rõ hơn trong phần thực thi của Content Provider ở sau.
o insert(): chèn một dòng dữ liệu mới vàoứng dụng được bạn cung cấp. Trả về một định dạng URI cho dòng mới thêm vào.
o update(): cập nhật dòng dữ liệu hiện đang có trongứng dụng được bạn cung cấp. Trả về số dòng được cập nhật.
o delete(): xóa dòng dữ liệu trong Provider của bạn. Trả về số dòng được xóa.
o query(): lấy dữ liệu từ Provider của bạn. Trả về dữ liệu dưới dạng một con trỏ Cursor. Giới thiệu về lớp UriMatcher:
o Lớp tiện ích để hỗ trợ trong việc kết hợp các URI trong Content Provider.
o Để giúp bạn lựa chọn các cách thức xử lí tốt đối với một mẫu URI, API cung cấp một số dịch vụ thuận tiện tại lớp UriMatcher, với một cây URI mẫu dưới dạng các số nguyên. Bạn có thể sử dụng các số nguyên này trong một câu lệnh mà bạn muốn xử lí với hành động là chuỗi URI được định danh.
o Để sử dụng lớp này, xây dựng một cây của các đối tượng UriMatcher, như ví dụ sau:
private static final int PEOPLE = 1;
private static final int PEOPLE_ID = 2;
private static final int PEOPLE_PHONES = 3;
private static final int PEOPLE_PHONES_ID = 4;
private static final int PEOPLE_CONTACTMETHODS = 7;
private static final int PEOPLE_CONTACTMETHODS_ID = 8;
private static final UriMatcher sURIMatcher = new
UriMatcher(UriMatcher.NO_MATCH);
static
{
sURIMatcher.addURI("contacts", "people", PEOPLE); sURIMatcher.addURI("contacts", "people/#", PEOPLE_ID); sURIMatcher.addURI("contacts", "people/#/phones", _PHONES); sURIMatcher.addURI("contacts", "people/#/phones/#",
PEOPLE_PHONES_ID);
sURIMatcher.addURI("contacts", "people/#/contact_methods", PEOPLE_CONTACTMETHODS);
sURIMatcher.addURI("contacts", "people/#/contact_methods/#", PEOPLE_CONTACTMETHODS_ID);
}
Một mô hình nội dung URI (UriMatcher) khớp với nội dung URI sử dụng để đăng kí phải sử dụng các kí tự đại diện sau:
o *: đại diện cho một chuỗi kí tự hợp lệ với độ dài bất kì. o #: đại diện cho một chuỗi kí tự số với độ dài bất kì. Ví dụ:
content://com.example.app.provider/*: đại diện cho nhiều chuỗi URI trong provider.
content://com.example.app.provider/table2/*: đại diện cho các URI có chứa trong table2
content://com.example.app.provider/table3/#: đại diện cho các dòng của table3