【移動應(yīng)用開發(fā)技術(shù)】Android中ContentProvider組件如何使用_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Android中ContentProvider組件如何使用_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Android中ContentProvider組件如何使用_第3頁
【移動應(yīng)用開發(fā)技術(shù)】Android中ContentProvider組件如何使用_第4頁
【移動應(yīng)用開發(fā)技術(shù)】Android中ContentProvider組件如何使用_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】Android中ContentProvider組件如何使用

/upload/information/20200706/160/92969.png/**

Return

a

ContentResolver

instance

for

your

application's

package.

*/

public

abstract

ContentResolver

getContentResolver();ContentResolver

contentResolver

=

getContentResovler();/**

*

@author:

下碼看花

*

date:

2019/8/8

*

description:

ContentProvider例子

*/public

class

MyContentProvider

extends

ContentProvider

{ /**

*

執(zhí)行初始化工作

*

@return

*/

@Override

public

boolean

onCreate()

{

return

false;

}

/**

*

查詢數(shù)據(jù)

*

@param

uri

*

@param

projection

*

@param

selection

*

@param

selectionArgs

*

@param

sortOrder

*

@return

*/

@Override

public

Cursor

query(@NonNull

Uri

uri,

@Nullable

String[]

projection,

@Nullable

String

selection,

@Nullable

String[]

selectionArgs,

@Nullable

String

sortOrder)

{

return

null;

}

/**

*

通過Uri返回對應(yīng)的MIME類型

*

@param

uri

*

@return

*/

@Override

public

String

getType(@NonNull

Uri

uri)

{

return

null;

}

/**

*

插入新數(shù)據(jù)

*

@param

uri

*

@param

values

*

@return

*/

@Override

public

Uri

insert(@NonNull

Uri

uri,

@Nullable

ContentValues

values)

{ return

null;

}

/**

*

刪除已有數(shù)據(jù)

*

@param

uri

*

@param

selection

*

@param

selectionArgs

*

@return

*/

@Override

public

int

delete(@NonNull

Uri

uri,

@Nullable

String

selection,

@Nullable

String[]

selectionArgs)

{ return

0;

} /**

*

更新數(shù)據(jù)

*

@param

uri

*

@param

values

*

@param

selection

*

@param

selectionArgs

*

@return

*/

@Override

public

int

update(@NonNull

Uri

uri,

@Nullable

ContentValues

values,

@Nullable

String

selection,

@Nullable

String[]

selectionArgs)

{ return

0;

}

}<!--

xxx為上一層包名

--><provider

android:name=".MyContentProvider"

android:authorities="com.xmkh.MyContentProvider"

android:exported="true"/>/upload/information/20200706/160/92972.png/**

*

@author:

下碼看花

*

date:

2019/8/8

*

description:

URI組裝代碼示例

*/public

class

TestContract

{

public

static

final

String

CONTENT_AUTHORITY

=

"com.xmkh.contentproviderdemo.MyContentProvider";

public

static

final

Uri

BASE_CONTENT_URI

=

Uri.parse("content://"

+

CONTENT_AUTHORITY);

public

static

final

String

PATH_ARTICLE

=

"article";

public

static

final

class

TestEntry

implements

BaseColumns

{

public

static

final

Uri

CONTENT_URI

=

BASE_CONTENT_URI.buildUpon().appendPath(PATH_ARTICLE).build();

protected

static

Uri

buildUri(long

id)

{

return

ContentUris.withAppendedId(CONTENT_URI,

id);

}

protected

static

final

String

TABLE_NAME

=

"article";

public

static

final

String

COLUMN_NAME

=

"name";

}

}/**

*

@author:

下碼看花

*

date:

2019/8/8

*

description:

演示demo數(shù)據(jù)庫

*/public

class

DbOpenHelper

extends

SQLiteOpenHelper

{

/**

*

數(shù)據(jù)庫名

*/

private

static

final

String

DATA_BASE_NAME

=

"article.db";

/**

*

數(shù)據(jù)庫版本號

*/

private

static

final

int

DATE_BASE_VERSION

=

1;

/**

*

表名-文章

*/

public

static

final

String

ARTICLE_TABLE_NAME

=

"article";

/**

*

表名-作者

*/

public

static

final

String

AUTHOR_TABLE_NAME

=

"author";

/**

*

創(chuàng)建表-文章(兩列:主鍵自增長、文章名稱)

*/

private

final

String

CREATE_ARTICLE_TABLE

=

"create

table

"

+

ARTICLE_TABLE_NAME

+

"(_id

integer

primary

key

autoincrement,

articleName

text)";

/**

*

創(chuàng)建表-作者(三列:主鍵自增長、作者名、性別)

*/

private

final

String

CREATE_AUTHOR_TABLE

=

"create

table

"

+

AUTHOR_TABLE_NAME

+

"(_id

integer

primary

key

autoincrement,

authorName

text,

sex

text)";

public

DbOpenHelper(Context

context)

{

super(context,

DATA_BASE_NAME,

null,

DATE_BASE_VERSION);

}

@Override

public

void

onCreate(SQLiteDatabase

db)

{

db.execSQL(CREATE_ARTICLE_TABLE);

db.execSQL(CREATE_AUTHOR_TABLE);

}

@Override

public

void

onUpgrade(SQLiteDatabase

db,

int

oldVersion,

int

newVersion)

{

}

}/**

*

@author:

下碼看花

*

date:

2019/8/8

*

description:

ContentProvider例子

*/public

class

MyContentProvider

extends

ContentProvider

{

private

Context

mContext;

private

SQLiteDatabase

sqLiteDatabase;

public

static

final

String

AUTHORITY

=

"com.xmkh.MyContentProvider";

public

static

final

int

ARTICLE_URI_CODE

=

0;

public

static

final

int

AUTHOR_URI_CODE

=

1;

private

static

final

UriMatcher

uriMatcher

=

new

UriMatcher(UriMatcher.NO_MATCH);

static

{

uriMatcher.addURI(AUTHORITY,

DbOpenHelper.ARTICLE_TABLE_NAME,

ARTICLE_URI_CODE);

uriMatcher.addURI(AUTHORITY,

DbOpenHelper.AUTHOR_TABLE_NAME,

AUTHOR_URI_CODE);

}

private

String

getTableName(Uri

uri)

{

String

tableName

=

null;

switch

(uriMatcher.match(uri))

{

case

ARTICLE_URI_CODE:

tableName

=

DbOpenHelper.ARTICLE_TABLE_NAME;

break;

case

AUTHOR_URI_CODE:

tableName

=

DbOpenHelper.AUTHOR_TABLE_NAME;

break;

}

return

tableName;

}

public

MyContentProvider()

{

}

/**

*

執(zhí)行初始化工作

*

*

@return

*/

@Override

public

boolean

onCreate()

{

mContext

=

getContext();

initArticleProviderData();

return

false;

}

//初始化原始數(shù)據(jù)

private

void

initArticleProviderData()

{

sqLiteDatabase

=

new

DbOpenHelper(mContext).getWritableDatabase();

sqLiteDatabase.beginTransaction();

ContentValues

contentValues

=

new

ContentValues();

contentValues.put("articleName",

"Android四大組件之Activity");

sqLiteDatabase.insert(DbOpenHelper.ARTICLE_TABLE_NAME,

null,

contentValues);

contentValues.put("articleName",

"Android四大組件之BroadcastReceiver");

sqLiteDatabase.insert(DbOpenHelper.ARTICLE_TABLE_NAME,

null,

contentValues);

contentValues.put("articleName",

"Android四大組件之Service");

sqLiteDatabase.insert(DbOpenHelper.ARTICLE_TABLE_NAME,

null,

contentValues);

contentValues.clear();

contentValues.put("authorName",

"ptt");

contentValues.put("sex",

"女");

sqLiteDatabase.insert(DbOpenHelper.AUTHOR_TABLE_NAME,

null,

contentValues);

contentValues.put("authorName",

"HiYoung");

contentValues.put("sex",

"男");

sqLiteDatabase.insert(DbOpenHelper.AUTHOR_TABLE_NAME,

null,

contentValues);

contentValues.put("authorName",

"gy");

contentValues.put("sex",

"男");

sqLiteDatabase.insert(DbOpenHelper.AUTHOR_TABLE_NAME,

null,

contentValues);

sqLiteDatabase.setTransactionSuccessful();

sqLiteDatabase.endTransaction();

}

/**

*

查詢數(shù)據(jù)

*

*

@param

uri

*

@param

projection

*

@param

selection

*

@param

selectionArgs

*

@param

sortOrder

*

@return

*/

@Override

public

Cursor

query(@NonNull

Uri

uri,

@Nullable

String[]

projection,

@Nullable

String

selection,

@Nullable

String[]

selectionArgs,

@Nullable

String

sortOrder)

{

String

tableName

=

getTableName(uri);

if

(tableName

==

null)

{

throw

new

IllegalArgumentException("Unsupported

URI:"

+

uri);

}

return

sqLiteDatabase.query(tableName,

projection,

selection,

selectionArgs,

null,

null,

sortOrder,

null);

}

/**

*

通過Uri返回對應(yīng)的MIME類型

*

*

@param

uri

*

@return

*/

@Override

public

String

getType(@NonNull

Uri

uri)

{

return

null;

}

/**

*

插入新數(shù)據(jù)

*

*

@param

uri

*

@param

values

*

@return

*/

@Override

public

Uri

insert(@NonNull

Uri

uri,

@Nullable

ContentValues

values)

{

String

tableName

=

getTableName(uri);

if

(tableName

==

null)

{

throw

new

IllegalArgumentException("Unsupported

URI:"

+

uri);

}

sqLiteDatabase.insert(tableName,

null,

values);

mContext.getContentResolver().notifyChange(uri,

null);

return

uri;

}

/**

*

刪除已有數(shù)據(jù)

*

*

@param

uri

*

@param

selection

*

@param

selectionArgs

*

@return

*/

@Override

public

int

delete(@NonNull

Uri

uri,

@Nullable

String

selection,

@Nullable

String[]

selectionArgs)

{

String

tableName

=

getTableName(uri);

if

(tableName

==

null)

{

throw

new

IllegalArgumentException("Unsupported

URI:"

+

uri);

}

int

count

=

sqLiteDatabase.delete(tableName,

selection,

selectionArgs);

if

(count

>

0)

{

mContext.getContentResolver().notifyChange(uri,

null);

}

return

count;

}

/**

*

更新數(shù)據(jù)

*

*

@param

uri

*

@param

values

*

@param

selection

*

@param

selectionArgs

*

@return

*/

@Override

public

int

update(@NonNull

Uri

uri,

@Nullable

ContentValues

values,

@Nullable

String

selection,

@Nullable

String[]

selectionArgs)

{

String

tableName

=

getTableName(uri);

if

(tableName

==

null)

{

throw

new

IllegalArgumentException("Unsupported

URI:"

+

uri);

}

int

row

=

sqLiteDatabase.update(tableName,

values,

selection,

selectionArgs);

if

(row

>

0)

{

mContext.getContentResolver().notifyChange(uri,

null);

}

return

row;

}

}/**

*

@author:

下碼看花

*

date:

2019/8/8

*

description:

ContentProvider實戰(zhàn)

*/public

class

MainActivity

extends

AppCompatActivity

{

private

final

String

TAG

=

"MainActivity";

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Uri

articleUri

=

Uri.parse("content://com.xmkh.MyContentProvider/article");

ContentValues

contentValues

=

new

ContentValues();

contentValues.put("articleName",

"Android四大組件之ContentProvider");

getContentResolver().insert(articleUri,

contentValues);

Cursor

articleCursor

=

getContentResolver().query(articleUri,

new

String[]{"_id",

"articleName"},

null,

null,

null);

if

(articleCursor

!=

null)

{

while

(articleCursor.moveToNext())

{

Log.e(TAG,

"ID:"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論