Content provider là gì

Content Provider vào Android

Ở phần 1, bọn họ sẽ tìm hiểu bí quyết tàng trữ tài liệu của một áp dụng trong cửa hàng dữ liệu SQLite. Trong ngôi trường đúng theo này, dữ liệu là “gia sản riêng” của ứng dụng và bắt buộc được truy cập vày các áp dụng không giống vào và một sản phẩm Android.

Bạn đang xem: Content provider là gì

Content Provider hỗ trợ cách thức truy vấn dữ liệu thân các ứng dụng khác nhau bên trên và một sản phẩm công nghệ Android. Sử dụng Content Provider tương tự hiệ tượng giao tiếp client/server trong những số ấy vận dụng truy cập dữ liệu vào vai trò là client với Content Provider nhập vai trò là VPS.

Một Content Provider là 1 trong những lớp nhỏ của lớp android.nội dung.ContentProvider và câu hỏi sinh sản một Content Provider liên quan đến sự việc tiến hành những thủ tục sau:

Phương thơm thứcChức năng
onCreate()Pmùi hương thức này được call khi một Content Provider được tạo ra lần trước tiên với được dùng để tiến hành các nhiệm vụ khởi tạo ra yêu cầu vì Content Provider.
query()Phương thức này được hotline lúc một áp dụng (client) tận hưởng tài liệu được nhận từ Content Provider. Dữ liệu nhận ra cất vào một đối tượng người sử dụng Cursor.
insert()Pmùi hương thức này được Call lúc 1 sản phẩm bắt đầu được cung ứng đại lý tài liệu Provider.
update()Phương thức này được gọi Khi những hàng tồn tại sẵn rất cần phải cập nhật thay mặt đến client (ứng dụng).
delete()Phương thơm thức này được Hotline lúc các sản phẩm bị xóa xuất phát từ 1 bảng.
getType()Trả về vẻ bên ngoài MIME của tài liệu được tàng trữ do Content Provider.

Xem thêm: Những Điều Bạn Cần Phải Biết Về Tổ Hợp Phím Tắt Ctrl R Là Gì

 Content URI

Một lắp thêm Android có thể chứa được nhiều Content Providers, cho nên vì vậy, khối hệ thống yêu cầu hỗ trợ giải pháp để rõ ràng các Content Providers. URI là 1 trong chiến thuật cho phép xác định tài liệu ví dụ với cùng một Content Provider rõ ràng.

Một URI hoàn toàn có thể tạo thành nhì phần: phần xác minh Content Provider (tuyệt còn được gọi là phần Authority) bao gồm hiệ tượng như thể một gói (package) vào vận dụng Android, ví dụ: com.example.mydbapp.myprovider; phần lắp thêm nhị khẳng định tài liệu của Content Provider, ví dụ tsay đắm chiếu mang lại một bảng tên student vào Content Provider: com.example.mydbứng dụng.myprovider/student giỏi xác định dữ liệu cụ thể rộng, ví dụ tđê mê chiếu cho một hàng có mức giá trị ID là 3 trong bảng student: com.example.mydbtiện ích.myprovider/student/3.

Có hầu như URI có thể không ngừng mở rộng đến các cấp với lúc này bạn có thể sử dụng lớp UriMatcher.

Đối tượng ContentResolver

Truy cập đến một Content Provider có được nhờ đối tượng người tiêu dùng ContentResolver. Một vận dụng rất có thể dành được tham mê chiếu mang đến đối tượng người dùng ContentResolver bằng phương pháp Hotline phương thức getContentResolver(). Đối tượng ContentResolver cất các phương thức tựa như như của một Content Provider nhỏng insert(), query(), update(), v.v.

Phần tử

Một Content Provider, sẽ được sử dụng vào hệ thống Android, đề xuất được knhị báo vào tập tin manifest cùng với phần tử . Phần tử đựng nhị thuộc tính đặc biệt quan trọng là:

android:authority: là URI với phần xác minh văn bản của Content Providerandroid:name: đựng tên lớp xúc tiến Content Provider

Dự án minh họa dùng Content Provider

Tạo dự án

– Tìm mang lại và xào luộc thư mục áp dụng SQLiteDemoApplication cùng đổi tên (mang định là SQLiteDemoApplication-Copy) thành ContentProviderApplication.

– Đóng dự án công trình hiện tại vẫn đang mngơi nghỉ bên trên Android Studio bằng cách chọn File > Close Project. Trong cửa sổ Welcome khổng lồ Android Studio lựa chọn xuất hiện an existing Android Studio project:

*

– Trong Open File or Project tìm tới dự án công trình ContentProviderApplication và dấn OK

*

Thêm gói Content Provider

Thêm gói mới bằng phương pháp vào app > java với thừa nhận con chuột yêu cầu vào thư mục java chọn New > Package

*

– Trong hộp thoại Choose Destination Directory lựa chọn …appsourcemainjava với nhận OK

*

– Trong hành lang cửa số New Package, nhập tên gói là com.kinhdientamquoc.vn.database.provider và OK

*

– Lúc này trong hành lang cửa số Project

*

Tạo những lớp Content Provider

– Sau Khi tạo gói com.kinhdientamquoc.vn.database.provider, bọn họ vẫn thêm những lớp cho gói này bằng phương pháp lựa chọn cùng nhận loài chuột buộc phải vào thương hiệu gói (com.kinhdientamquoc.vn.database.provider) lựa chọn New > Other > Content Provider

*

– Trong hộp thoại Configure Component lựa chọn đồng ý tên mang định của lớp là MyContentProvider với nhập com.kinhdientamquoc.vn.database.provider.MyContentProvider vào URI Authorities:

*

Giữ nguyên những tùy lựa chọn không giống cùng nhấn Finish.

Xem thêm: Băng Thông Rộng Là Gì - Tất Tần Tật Về Băng Thông Mà Bạn Cần Biết

Lúc bấy giờ, lớp MyContentProvider.java sẽ xuất hiện thêm trong gói com.kinhdientamquoc.vn.database.provider

*

Và bạn cũng có thể coi nội dung mặc định của tập tin này bằng phương pháp thừa nhận song con chuột trái

*

Tạo Authority URI với Content URI

Trong tập tin MyContentProvider.java thêm các đoạn mã sau:

package com.kinhdientamquoc.vn.database.provider;import game android.content.ContentProvider;import app android.content.ContentValues;import app android.database.Cursor;import game android.net.Uri;import game android.nội dung.UriMatcher;public class MyContentProvider extends ContentProvider { private static final String AUTHORITY ="com.kinhdientamquoc.vn.database.provider.MyContentProvider"; private static final String STUDENTS_TABLE = "Students"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + STUDENTS_TABLE); public MyContentProvider() ...Chúng ta chế tạo ra chuỗi tên AUTHORITY đựng thông báo về Authority URI, chuỗi tên STUDENTS_TABLE cất biết tin về bảng cửa hàng tài liệu (Students) và chuỗi thương hiệu CONTENT_URI là phối hợp của nhì chuỗi AUTHORITY với STUDENTS_TABLE bắt đầu bằng chuỗi content:// cần sử dụng phương thức parse của lớp Uri.

Đối tượng UriMatcher

URI là 1 chiến thuật cho phép xác định tài liệu, hoàn toàn có thể là 1 hàng hay là 1 bảng cơ sở tài liệu, với một Content Provider cụ thể. Chúng ta chú ý những cách thức trong lớp MyContentProvider nlỗi insert(), delete(), getType(), v.v. đa số nhận một URI có tác dụng tmê say số. URI này như một tđắm đuối chiếu mang lại một bảng đại lý tài liệu hay 1 sản phẩm rõ ràng của bảng đó cùng trách nhiệm bọn họ là gửi kiểu Uri phù hợp cho những cách thức. Nhiệm vụ này có thể triển khai một cách thuận lợi nhờ vào đối tượng người sử dụng UriMatcher. Khi một thể hiện của UriMatcher được chế tác, nó sẽ tiến hành thông số kỹ thuật nhằm trả về một số trong những nguim tương ứng cùng với thứ hạng Uri nhưng nó được thử khám phá. Trong vận dụng bây chừ, bọn họ sẽ cấu hình diễn tả UriMatcher trả về quý giá 1 giả dụ tham chiếu đến toàn thể bảng đại lý dữ liệu (ví dụ Students) với trả về cực hiếm 2 nếu như tham chiếu cho ID của một sản phẩm làm sao kia. Thêm hai biến số ngulặng tương ứng cùng với hai hình dáng Uri vào lớp MyContentProvider nhỏng sau:

public class MyContentProvider extends ContentProvider { private static final String AUTHORITY ="com.kinhdientamquoc.vn.database.provider.MyContentProvider"; private static final String STUDENTS_TABLE = "Students"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + STUDENTS_TABLE); public static final int STUDENTS = 1; public static final int STUDENTS_ID = 2; public MyContentProvider() ...Sau đó, tạo thành biểu lộ UriMatcher cùng thông số kỹ thuật nó trả về các cực hiếm số ngulặng phù hợp:

public class MyContentProvider extends ContentProvider { private static final String AUTHORITY ="com.kinhdientamquoc.vn.database.provider.MyContentProvider"; private static final String STUDENTS_TABLE = "Students"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + STUDENTS_TABLE); public static final int STUDENTS = 1; public static final int STUDENTS_ID = 2; private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH); static sURIMatcher.addURI(AUTHORITY, STUDENTS_TABLE, STUDENTS); sURIMatcher.addURI(AUTHORITY, STUDENTS_TABLE + "/#",STUDENTS_ID); public MyContentProvider() Thực thi phương thức onCreate()Phương thơm thức onCreate() sẽ được call Khi lớp Content Provider được tạo ra. Mục đích hotline onCreate() vào vận dụng minch họa này là chế tác một miêu tả của lớp DataHandler (một phiên bản sao của lớp DataHandler trường đoản cú ứng dụng vào Phần 1). Để chế tạo diễn đạt DataHandler với thực hiện các cách thức vào lớp này, bọn họ bắt buộc knhị báo lớp DataHandler vào tập tin MyContentProvider.java và vị lớp DataHandler được đựng vào gói com.kinhdientamquoc.vn.sqlitedemoapplication

*

nên họ knhị báo như sau:

package com.kinhdientamquoc.vn.database.provider;import apk.content.ContentProvider;import apk.nội dung.ContentValues;import android.database.Cursor;import android.net.Uri;import android.content.UriMatcher;import com.kinhdientamquoc.vn.sqlitedemoapplication.DataHandler;import game android.database.sqlite.SQLiteDatabase;import game android.database.sqlite.SQLiteQueryBuilder;import game android.text.TextUtils;public class MyContentProvider extends ContentProvider ...Khởi sinh sản biểu thị lớp DataHandler trong cách thức onCreate() nhỏng sau:

public class MyContentProvider extends ContentProvider { ... private DataHandler myHandler; public MyContentProvider()

Chuyên mục: Hỏi Đáp