ContactsProvider的使用
生活随笔
收集整理的這篇文章主要介紹了
ContactsProvider的使用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這個(gè)東西就是Android用來(lái)共享數(shù)據(jù)的,沒(méi)啥太多的東西,我也只會(huì)用,簡(jiǎn)單的了解了下原理跟使用
先上個(gè)代碼
public class ContactsProvider extends ContentProvider {//主機(jī)地址 當(dāng)前類的完整路徑public static final String AUTHORITIES = "com.yide.yide.provider.ContactsProvider";//ContentProvider.class.getCanonicalName();//地址匹配對(duì)象static UriMatcher mUriMatcher;public static final int CONTACT = 1;//對(duì)應(yīng)聯(lián)系人表的uri常量AUTHORITIESpublic static Uri URI_CONTACT = Uri.parse("content://"+AUTHORITIES+"/contact");static {mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);//添加一個(gè)匹配的規(guī)則mUriMatcher.addURI(AUTHORITIES,"/contact",CONTACT);}private ContactOpenHelper mHelper;@Overridepublic boolean onCreate() {mHelper = new ContactOpenHelper(getContext()); // if (mHelper != null){ // return true; // } // return false;return true;}@Nullable@Overridepublic String getType(@NonNull Uri uri) {return null;}@Nullable@Overridepublic Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {//數(shù)據(jù)存到數(shù)據(jù)庫(kù) 創(chuàng)建db文件 創(chuàng)建表int code = mUriMatcher.match(uri);switch (code){case CONTACT:SQLiteDatabase db = mHelper.getWritableDatabase(); // mHelper.onUpgrade(db,1,2); // db = mHelper.getWritableDatabase();long id = db.insert(ContactOpenHelper.T_CONTACT, "", values);if (id > 0 ){System.out.println("----------ContanctProvider 添加成功");//拼接最新uriuri = ContentUris.withAppendedId(uri,id);}break;default:break;}return uri;}@Overridepublic int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {int code = mUriMatcher.match(uri);int deleteCount = 0;switch (code){case CONTACT:SQLiteDatabase db = mHelper.getWritableDatabase();deleteCount = db.delete(ContactOpenHelper.T_CONTACT, selection, selectionArgs);if (deleteCount > 0){System.out.println("----------ContanctProvider 刪除成功");}break;default:break;}return deleteCount;}@Overridepublic int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {int updateCount = 0;int code = mUriMatcher.match(uri);switch (code){case CONTACT:SQLiteDatabase db = mHelper.getWritableDatabase();updateCount = db.update(ContactOpenHelper.T_CONTACT, values, selection, selectionArgs);if (updateCount >0){System.out.println("----------ContanctProvider 更新成功");}break;default:break;}return updateCount;}@Nullable@Overridepublic Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {Cursor query = null;int code = mUriMatcher.match(uri);switch (code){case CONTACT:SQLiteDatabase db = mHelper.getWritableDatabase();query = db.query(ContactOpenHelper.T_CONTACT, projection, selection, selectionArgs, null, null, sortOrder);System.out.println("----------ContanctProvider 查詢成功");break;default:break;}return query;} }一般用到這個(gè)類都會(huì)需要一個(gè)extends SQLiteOpenHelper這個(gè)東西,就是創(chuàng)建數(shù)據(jù)庫(kù)的,一般通過(guò)上邊那個(gè)類(ContactsProvider)來(lái)操作這個(gè)東西
代碼
public class ContactOpenHelper extends SQLiteOpenHelper {public static final String T_CONTACT = "t_contact";/*** 數(shù)據(jù)庫(kù)版本*/private static final int DATABASE_VERSION = 1;/*** 數(shù)據(jù)庫(kù)名稱*/private static final String DATABASE_NAME = "con.db";public class ContactTable implements BaseColumns{//默認(rèn)添加字段信息(一列)public static final String _ID = "_id";//賬號(hào)public static final String ACCOUNT = "account";//賬號(hào)public static final String NICKNAME = "nickname";//昵稱public static final String HEADIMAGE = "headimage";//頭像public static final String PINYIN = "pinyin";//賬號(hào)拼音}public ContactOpenHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Override //創(chuàng)建數(shù)據(jù)庫(kù)調(diào)用這個(gè)類public void onCreate(SQLiteDatabase db) {//創(chuàng)建數(shù)據(jù)表String sql =("create table if not exists "+T_CONTACT+"" +"("+ContactTable._ID+" integer primary key autoincrement," +""+ContactTable.ACCOUNT+" text not null,"+ContactTable.NICKNAME+" text not null," +""+ContactTable.HEADIMAGE+" text not null,"+ContactTable.PINYIN+" text not null)");//插入數(shù)據(jù)db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} }但這這個(gè)數(shù)據(jù)庫(kù)的創(chuàng)建,我被坑的莫夢(mèng)奇妙,直接就是創(chuàng)建不了,所以后續(xù)的操作就做不了,也就是說(shuō),對(duì)這個(gè)數(shù)據(jù)庫(kù)中的表進(jìn)行插入的時(shí)候,他不會(huì)報(bào)錯(cuò),但是進(jìn)行其他操作的話就會(huì)報(bào)錯(cuò),而且,根本就沒(méi)有你創(chuàng)建的表,更沒(méi)有數(shù)據(jù)庫(kù),后來(lái)我改了一下數(shù)據(jù)庫(kù)名稱,就沒(méi)事了 ??????然后就沒(méi)事了???不知道為啥,可能是因?yàn)槲以跍y(cè)試的時(shí)候,數(shù)據(jù)庫(kù)名稱沒(méi)有加.db,之后還有的之歌名稱,只不過(guò)加上了.db的原因吧,不曉得不曉得。。。
哦,對(duì)了,這個(gè)ContentProvider的使用,還需要在清單文件里進(jìn)行provider一下,這里邊有很多參數(shù),隨便搜一下就有,我就不說(shuō)了,OK就這樣記錄一下,后期有機(jī)會(huì)再補(bǔ)充詳細(xì)的。
<providerandroid:name="com.provider.ContactsProvider"android:authorities="com.provider.ContactsProvider"/>```總結(jié)
以上是生活随笔為你收集整理的ContactsProvider的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nginx报错502:connect()
- 下一篇: 从零开始学USB(三、基础知识3)