首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android中ContentProvider跟ContentResolver使用入门

2012-09-08 
Android中ContentProvider和ContentResolver使用入门/**?*??*/package?com.backgroundserviceimport?andr

Android中ContentProvider和ContentResolver使用入门

/**
Android中ContentProvider跟ContentResolver使用入门?*?
Android中ContentProvider跟ContentResolver使用入门?*/
Android中ContentProvider跟ContentResolver使用入门package?com.backgroundservice;
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门import?android.content.ContentProvider;
Android中ContentProvider跟ContentResolver使用入门import?android.content.ContentValues;
Android中ContentProvider跟ContentResolver使用入门import?android.content.UriMatcher;
Android中ContentProvider跟ContentResolver使用入门import?android.database.Cursor;
Android中ContentProvider跟ContentResolver使用入门import?android.database.sqlite.SQLiteDatabase;
Android中ContentProvider跟ContentResolver使用入门import?android.database.sqlite.SQLiteQueryBuilder;
Android中ContentProvider跟ContentResolver使用入门import?android.net.Uri;
Android中ContentProvider跟ContentResolver使用入门import?android.util.Log;
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门/**
Android中ContentProvider跟ContentResolver使用入门?*?TODO
Android中ContentProvider跟ContentResolver使用入门?*?
Android中ContentProvider跟ContentResolver使用入门?*?@author?tianlu
Android中ContentProvider跟ContentResolver使用入门?*?@version?1.0?Create?At?:?2010-2-18?下午01:58:39
Android中ContentProvider跟ContentResolver使用入门?*/
Android中ContentProvider跟ContentResolver使用入门public?class?TestContentProvider?extends?ContentProvider?{
Android中ContentProvider跟ContentResolver使用入门????private?SQLiteDatabase?mDb;
Android中ContentProvider跟ContentResolver使用入门????private?DatabaseHelper?mDbHelper?=?null;
Android中ContentProvider跟ContentResolver使用入门????private?static?final?String?DATABASE_NAME?=?"rssitems.db";
Android中ContentProvider跟ContentResolver使用入门????private?static?final?String?DATABASE_TABLE_NAME?=?"rssItems";
Android中ContentProvider跟ContentResolver使用入门????private?static?final?int?DB_VERSION?=?1;
Android中ContentProvider跟ContentResolver使用入门????private?static?final?int?ALL_MESSAGES?=?1;
Android中ContentProvider跟ContentResolver使用入门????private?static?final?int?SPECIFIC_MESSAGE?=?2;
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????//?Set?up?our?URL?matchers?to?help?us?determine?what?an
Android中ContentProvider跟ContentResolver使用入门????//?incoming?URI?parameter?is.
Android中ContentProvider跟ContentResolver使用入门????private?static?final?UriMatcher?URI_MATCHER;
Android中ContentProvider跟ContentResolver使用入门????static?{
Android中ContentProvider跟ContentResolver使用入门????????URI_MATCHER?=?new?UriMatcher(UriMatcher.NO_MATCH);
Android中ContentProvider跟ContentResolver使用入门????????URI_MATCHER.addURI("test",?"item",?ALL_MESSAGES);
Android中ContentProvider跟ContentResolver使用入门????????URI_MATCHER.addURI("test",?"item/#",?SPECIFIC_MESSAGE);
Android中ContentProvider跟ContentResolver使用入门????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????//?Here's?the?public?URI?used?to?query?for?RSS?items.
Android中ContentProvider跟ContentResolver使用入门????public?static?final?Uri?CONTENT_URI?=?Uri
Android中ContentProvider跟ContentResolver使用入门????????????.parse("content://test/item");
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????//?Here?are?our?column?name?constants,?used?to?query?for?field?values.
Android中ContentProvider跟ContentResolver使用入门????public?static?final?String?ID?=?"_id";
Android中ContentProvider跟ContentResolver使用入门????public?static?final?String?NAME?=?"NAME";
Android中ContentProvider跟ContentResolver使用入门????public?static?final?String?VALUE?=?"VALUE";
Android中ContentProvider跟ContentResolver使用入门????public?static?final?String?DEFAULT_SORT_ORDER?=?ID?+?"?DESC";
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????private?static?class?DatabaseHelper?extends?AbstractDatabaseHelper?{
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????@Override
Android中ContentProvider跟ContentResolver使用入门????????protected?String[]?createDBTables()?{
Android中ContentProvider跟ContentResolver使用入门????????????//?TODO?Auto-generated?method?stub
Android中ContentProvider跟ContentResolver使用入门????????????String?sql?=?"CREATE?TABLE?"?+?DATABASE_TABLE_NAME?+?"("?+?ID
Android中ContentProvider跟ContentResolver使用入门????????????????????+?"?INTEGER?PRIMARY?KEY?AUTOINCREMENT,?"?+?NAME?+?"?TEXT,"
Android中ContentProvider跟ContentResolver使用入门????????????????????+?VALUE?+?"?TEXT);";
Android中ContentProvider跟ContentResolver使用入门????????????return?new?String[]?{?sql?};
Android中ContentProvider跟ContentResolver使用入门????????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????@Override
Android中ContentProvider跟ContentResolver使用入门????????protected?String[]?dropDBTables()?{
Android中ContentProvider跟ContentResolver使用入门????????????//?TODO?Auto-generated?method?stub
Android中ContentProvider跟ContentResolver使用入门????????????return?null;
Android中ContentProvider跟ContentResolver使用入门????????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????@Override
Android中ContentProvider跟ContentResolver使用入门????????protected?String?getDatabaseName()?{
Android中ContentProvider跟ContentResolver使用入门????????????//?TODO?Auto-generated?method?stub
Android中ContentProvider跟ContentResolver使用入门????????????return?DATABASE_NAME;
Android中ContentProvider跟ContentResolver使用入门????????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????@Override
Android中ContentProvider跟ContentResolver使用入门????????protected?int?getDatabaseVersion()?{
Android中ContentProvider跟ContentResolver使用入门????????????//?TODO?Auto-generated?method?stub
Android中ContentProvider跟ContentResolver使用入门????????????return?DB_VERSION;
Android中ContentProvider跟ContentResolver使用入门????????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????@Override
Android中ContentProvider跟ContentResolver使用入门????????protected?String?getTag()?{
Android中ContentProvider跟ContentResolver使用入门????????????//?TODO?Auto-generated?method?stub
Android中ContentProvider跟ContentResolver使用入门????????????return?TestContentProvider.class.getSimpleName();
Android中ContentProvider跟ContentResolver使用入门????????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????/**
Android中ContentProvider跟ContentResolver使用入门?????*?
Android中ContentProvider跟ContentResolver使用入门?????*/
Android中ContentProvider跟ContentResolver使用入门????public?TestContentProvider()?{
Android中ContentProvider跟ContentResolver使用入门????????//?TODO?Auto-generated?constructor?stub
Android中ContentProvider跟ContentResolver使用入门????????
Android中ContentProvider跟ContentResolver使用入门????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????/*
Android中ContentProvider跟ContentResolver使用入门?????*?(non-Javadoc)
Android中ContentProvider跟ContentResolver使用入门?????*?
Android中ContentProvider跟ContentResolver使用入门?????*?@see?android.content.ContentProvider#delete(android.net.Uri,
Android中ContentProvider跟ContentResolver使用入门?????*?java.lang.String,?java.lang.String[])
Android中ContentProvider跟ContentResolver使用入门?????*/
Android中ContentProvider跟ContentResolver使用入门????@Override
Android中ContentProvider跟ContentResolver使用入门????public?int?delete(Uri?uri,?String?selection,?String[]?selectionArgs)?{
Android中ContentProvider跟ContentResolver使用入门????????//?NOTE?Argument?checking?code?omitted.?Check?your?parameters!
Android中ContentProvider跟ContentResolver使用入门????????int?rowCount?=?mDb.delete(DATABASE_TABLE_NAME,?selection,?selectionArgs);
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????//?Notify?any?listeners?and?return?the?deleted?row?count.
Android中ContentProvider跟ContentResolver使用入门????????getContext().getContentResolver().notifyChange(uri,?null);
Android中ContentProvider跟ContentResolver使用入门????????return?rowCount;
Android中ContentProvider跟ContentResolver使用入门????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????/*
Android中ContentProvider跟ContentResolver使用入门?????*?(non-Javadoc)
Android中ContentProvider跟ContentResolver使用入门?????*?
Android中ContentProvider跟ContentResolver使用入门?????*?@see?android.content.ContentProvider#getType(android.net.Uri)
Android中ContentProvider跟ContentResolver使用入门?????*/
Android中ContentProvider跟ContentResolver使用入门????@Override
Android中ContentProvider跟ContentResolver使用入门????public?String?getType(Uri?uri)?{
Android中ContentProvider跟ContentResolver使用入门????????switch?(URI_MATCHER.match(uri))?{
Android中ContentProvider跟ContentResolver使用入门????????case?ALL_MESSAGES:
Android中ContentProvider跟ContentResolver使用入门????????????return?"vnd.android.cursor.dir/rssitem";?//?List?of?items.
Android中ContentProvider跟ContentResolver使用入门????????case?SPECIFIC_MESSAGE:
Android中ContentProvider跟ContentResolver使用入门????????????return?"vnd.android.cursor.item/rssitem";?//?Specific?item.
Android中ContentProvider跟ContentResolver使用入门????????default:
Android中ContentProvider跟ContentResolver使用入门????????????return?null;
Android中ContentProvider跟ContentResolver使用入门????????}
Android中ContentProvider跟ContentResolver使用入门????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????/*
Android中ContentProvider跟ContentResolver使用入门?????*?(non-Javadoc)
Android中ContentProvider跟ContentResolver使用入门?????*?
Android中ContentProvider跟ContentResolver使用入门?????*?@see?android.content.ContentProvider#insert(android.net.Uri,
Android中ContentProvider跟ContentResolver使用入门?????*?android.content.ContentValues)
Android中ContentProvider跟ContentResolver使用入门?????*/
Android中ContentProvider跟ContentResolver使用入门????@Override
Android中ContentProvider跟ContentResolver使用入门????public?Uri?insert(Uri?uri,?ContentValues?values)?{
Android中ContentProvider跟ContentResolver使用入门????????//?NOTE?Argument?checking?code?omitted.?Check?your?parameters!?Check?that
Android中ContentProvider跟ContentResolver使用入门????????//?your?row?addition?request?succeeded!
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门???????long?rowId?=?-1;
Android中ContentProvider跟ContentResolver使用入门???????rowId?=?mDb.insert(DATABASE_TABLE_NAME,?NAME,?values);
Android中ContentProvider跟ContentResolver使用入门???????Uri?newUri?=?Uri.withAppendedPath(CONTENT_URI,?""+rowId);
Android中ContentProvider跟ContentResolver使用入门???????Log.i("TestContentProvider",?"saved?a?record?"?+?rowId?+?"?"?+?newUri);
Android中ContentProvider跟ContentResolver使用入门???????//?Notify?any?listeners?and?return?the?URI?of?the?new?row.
Android中ContentProvider跟ContentResolver使用入门???????getContext().getContentResolver().notifyChange(CONTENT_URI,?null);
Android中ContentProvider跟ContentResolver使用入门???????return?newUri;
Android中ContentProvider跟ContentResolver使用入门????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????/*
Android中ContentProvider跟ContentResolver使用入门?????*?(non-Javadoc)
Android中ContentProvider跟ContentResolver使用入门?????*?
Android中ContentProvider跟ContentResolver使用入门?????*?@see?android.content.ContentProvider#onCreate()
Android中ContentProvider跟ContentResolver使用入门?????*/
Android中ContentProvider跟ContentResolver使用入门????@Override
Android中ContentProvider跟ContentResolver使用入门????public?boolean?onCreate()?{
Android中ContentProvider跟ContentResolver使用入门????????//?TODO?Auto-generated?method?stub
Android中ContentProvider跟ContentResolver使用入门????????try
Android中ContentProvider跟ContentResolver使用入门????????{
Android中ContentProvider跟ContentResolver使用入门????????????mDbHelper?=?new?DatabaseHelper();
Android中ContentProvider跟ContentResolver使用入门????????????mDbHelper.open(getContext());
Android中ContentProvider跟ContentResolver使用入门????????????mDb?=?mDbHelper.getMDb();
Android中ContentProvider跟ContentResolver使用入门????????}catch(Exception?e){
Android中ContentProvider跟ContentResolver使用入门????????????e.printStackTrace();
Android中ContentProvider跟ContentResolver使用入门????????}
Android中ContentProvider跟ContentResolver使用入门????????return?true;
Android中ContentProvider跟ContentResolver使用入门????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????/*
Android中ContentProvider跟ContentResolver使用入门?????*?(non-Javadoc)
Android中ContentProvider跟ContentResolver使用入门?????*?
Android中ContentProvider跟ContentResolver使用入门?????*?@see?android.content.ContentProvider#query(android.net.Uri,
Android中ContentProvider跟ContentResolver使用入门?????*?java.lang.String[],?java.lang.String,?java.lang.String[],
Android中ContentProvider跟ContentResolver使用入门?????*?java.lang.String)
Android中ContentProvider跟ContentResolver使用入门?????*/
Android中ContentProvider跟ContentResolver使用入门????public?Cursor?query(Uri?uri,?String[]?projection,?String?selection,
Android中ContentProvider跟ContentResolver使用入门????????????String[]?selectionArgs,?String?sortOrder)?{
Android中ContentProvider跟ContentResolver使用入门????????//?We?won't?bother?checking?the?validity?of?params?here,?but?you?should!
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????//?SQLiteQueryBuilder?is?the?helper?class?that?creates?the
Android中ContentProvider跟ContentResolver使用入门????????//?proper?SQL?syntax?for?us.
Android中ContentProvider跟ContentResolver使用入门????????SQLiteQueryBuilder?qBuilder?=?new?SQLiteQueryBuilder();
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????//?Set?the?table?we're?querying.
Android中ContentProvider跟ContentResolver使用入门????????qBuilder.setTables(DATABASE_TABLE_NAME);
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????//?If?the?query?ends?in?a?specific?record?number,?we're
Android中ContentProvider跟ContentResolver使用入门????????//?being?asked?for?a?specific?record,?so?set?the
Android中ContentProvider跟ContentResolver使用入门????????//?WHERE?clause?in?our?query.
Android中ContentProvider跟ContentResolver使用入门????????if((URI_MATCHER.match(uri))?==?SPECIFIC_MESSAGE){
Android中ContentProvider跟ContentResolver使用入门????????????qBuilder.appendWhere("_id="?+?uri.getLastPathSegment());
Android中ContentProvider跟ContentResolver使用入门????????????Log.i("TestContentProvider",?"_id="?+??uri.getLastPathSegment());
Android中ContentProvider跟ContentResolver使用入门????????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????//?Make?the?query.
Android中ContentProvider跟ContentResolver使用入门????????Cursor?c?=?qBuilder.query(mDb,
Android中ContentProvider跟ContentResolver使用入门????????????????projection,
Android中ContentProvider跟ContentResolver使用入门????????????????selection,
Android中ContentProvider跟ContentResolver使用入门????????????????selectionArgs,
Android中ContentProvider跟ContentResolver使用入门????????????????null,
Android中ContentProvider跟ContentResolver使用入门????????????????null,
Android中ContentProvider跟ContentResolver使用入门????????????????sortOrder);
Android中ContentProvider跟ContentResolver使用入门????????Log.i("TestContentProvider",?"get?records");
Android中ContentProvider跟ContentResolver使用入门????????c.setNotificationUri(getContext().getContentResolver(),?uri);
Android中ContentProvider跟ContentResolver使用入门????????return?c;
Android中ContentProvider跟ContentResolver使用入门????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????/*
Android中ContentProvider跟ContentResolver使用入门?????*?(non-Javadoc)
Android中ContentProvider跟ContentResolver使用入门?????*?
Android中ContentProvider跟ContentResolver使用入门?????*?@see?android.content.ContentProvider#update(android.net.Uri,
Android中ContentProvider跟ContentResolver使用入门?????*?android.content.ContentValues,?java.lang.String,?java.lang.String[])
Android中ContentProvider跟ContentResolver使用入门?????*/
Android中ContentProvider跟ContentResolver使用入门????@Override
Android中ContentProvider跟ContentResolver使用入门????public?int?update(Uri?uri,?ContentValues?values,?String?selection,
Android中ContentProvider跟ContentResolver使用入门????????????String[]?selectionArgs)?{
Android中ContentProvider跟ContentResolver使用入门????????//?NOTE?Argument?checking?code?omitted.?Check?your?parameters!
Android中ContentProvider跟ContentResolver使用入门????????int?updateCount?=?mDb.update(DATABASE_TABLE_NAME,?values,?selection,?selectionArgs);
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门????????//?Notify?any?listeners?and?return?the?updated?row?count.
Android中ContentProvider跟ContentResolver使用入门????????getContext().getContentResolver().notifyChange(uri,?null);
Android中ContentProvider跟ContentResolver使用入门????????return?updateCount;
Android中ContentProvider跟ContentResolver使用入门????}
Android中ContentProvider跟ContentResolver使用入门
Android中ContentProvider跟ContentResolver使用入门}
Android中ContentProvider跟ContentResolver使用入门配置文件如下:
Android中ContentProvider跟ContentResolver使用入门????????<provider?android:name="TestContentProvider"
Android中ContentProvider跟ContentResolver使用入门????????????android:authorities="test">
Android中ContentProvider跟ContentResolver使用入门????????</provider>在客户端中可以使用如下方法进行调用:
Android中ContentProvider跟ContentResolver使用入门????????????????ContentValues?values?=?new?ContentValues();
Android中ContentProvider跟ContentResolver使用入门????????????????values.put(TestContentProvider.NAME,?"testname1");
Android中ContentProvider跟ContentResolver使用入门????????????????values.put(TestContentProvider.VALUE,?"testvalu1e");
Android中ContentProvider跟ContentResolver使用入门????????????????Uri?newAddUri?=?TestActivity.this.getContentResolver().insert(TestContentProvider.CONTENT_URI,?values);
Android中ContentProvider跟ContentResolver使用入门????????????????Cursor?c?=?TestActivity.this.managedQuery(newAddUri,?new?String[]{TestContentProvider.NAME},?null,?null,?null);
Android中ContentProvider跟ContentResolver使用入门????????????????Log.i("TestActivity",?""?+?c.getCount());
Android中ContentProvider跟ContentResolver使用入门????????????????if(c.moveToNext())
Android中ContentProvider跟ContentResolver使用入门????????????????{
Android中ContentProvider跟ContentResolver使用入门????????????????????Log.i("TestActivity",?c.getString(0));
Android中ContentProvider跟ContentResolver使用入门????????????????}上面的代码是先进行插入,然后进行查询并打印。就是如此简单,所有的应用如果需要都可以对外方便的提供数据接口,同时其他应用也可以很方便的进行调用。

热点排行