版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖鹽采掘工持續(xù)改進評優(yōu)考核試卷含答案
- 硅晶片拋光工崗前核心考核試卷含答案
- 軟膏劑工QC考核試卷含答案
- 總?cè)軇┥a(chǎn)工崗前基礎(chǔ)模擬考核試卷含答案
- 苯基氯硅烷生產(chǎn)工常識考核試卷含答案
- 白銀熔池熔煉工測試驗證評優(yōu)考核試卷含答案
- 2024年河北?。?31所)輔導(dǎo)員考試筆試真題匯編附答案
- 2025《行測》考試試題完美版
- 栲膠生產(chǎn)工變革管理水平考核試卷含答案
- 粗紗工成果轉(zhuǎn)化知識考核試卷含答案
- 吳江三小英語題目及答案
- 供水管道搶修知識培訓(xùn)課件
- 司法警察協(xié)助執(zhí)行課件
- 廣東物業(yè)管理辦法
- 業(yè)務(wù)規(guī)劃方案(3篇)
- 雙向晉升通道管理辦法
- 集團債權(quán)訴訟管理辦法
- 上海物業(yè)消防改造方案
- 鋼結(jié)構(gòu)施工進度計劃及措施
- 供應(yīng)商信息安全管理制度
- 智慧健康養(yǎng)老服務(wù)與管理專業(yè)教學(xué)標準(高等職業(yè)教育??疲?025修訂
評論
0/150
提交評論