內(nèi)容提供者。就按字面意思來理解 Android手機(jī)的內(nèi)容,提供出來的工具
它是不同應(yīng)用程序直接進(jìn)行數(shù)據(jù)交換的標(biāo)準(zhǔn)API,當(dāng)一個(gè)應(yīng)用程序需要把自己的數(shù)據(jù)暴露出來給其他應(yīng)用使用的時(shí)候,該應(yīng)用程序
就可以通過提供contentProvider來實(shí)現(xiàn):其他應(yīng)用程序就可以通過ContentResolver來操作ContentProvider暴露出來的數(shù)據(jù)(抄的瘋狂Android),內(nèi)容提供器(Content Provider)主要用于在不同的應(yīng)用程序之間實(shí)現(xiàn)數(shù)據(jù)共享的功能,
它提供了一套完整的機(jī)制,允許一個(gè)程序訪問另一個(gè)程序中的數(shù)據(jù),同時(shí)還能保證被訪數(shù)據(jù)
的安全性。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1、創(chuàng)建一PersonProvider繼承ContentProvider,實(shí)現(xiàn)六個(gè)方法,增刪改查以及onCreate和getType。(因篇幅限制,這里只貼出了具有代表性的幾個(gè)方法)? ?
public class PersonProvider extends ContentProvider {
? ? private MyOpenHelper oh;
? ? SQLiteDatabase db;
?
? ? //內(nèi)容提供者創(chuàng)建時(shí)調(diào)用
? ? @Override
? ? public boolean onCreate() {
? ? ? ? ? oh = new MyOpenHelper(getContext());
? ? ? ? ? db = oh.getWritableDatabase();
? ? ? ? ? return false;
? ? }
? ? @Override
? ? public Cursor query(Uri uri, String[] projection, String selection,
? ? ? ? ? ? ? String[] selectionArgs, String sortOrder) {
? ? ? ? ? Cursor? cursor = db.query("person", projection, selection, selectionArgs, null, null, sortOrder, null);
? ? ? ? ? return cursor;
? ? }
? ? @Override
? ? public String getType(Uri uri) {? ? ? ? ?
? ? ? ? ? return null;
? ? }
? ? //此方法供其他應(yīng)用調(diào)用,用于往people數(shù)據(jù)庫里插數(shù)據(jù)
? ? //values:由其他應(yīng)用傳入,用于封裝要插入的數(shù)據(jù)
? ? //uri:內(nèi)容提供者的主機(jī)名,也就是地址
? ? @Override
? ? public Uri insert(Uri uri, ContentValues values) {
? ? ? ? ? //使用uri匹配器匹配傳入的uri?
? ? ? ? ? ? ? db.insert("person", null, values);
? ? ? ? ? return uri;
? ? }
2、 因?yàn)槲覀兊膬?nèi)容提供者主要是在數(shù)據(jù)庫中進(jìn)行增刪改查,所以我們?cè)賱?chuàng)建一個(gè)MyOpenHelper繼承SQLiteOpenHelper,創(chuàng)建一個(gè)people.db