编写和使用ContentProvicer的步骤

编写:

 1.编写一个类,继承android.content.ContentProvider
 2.定义一个uri字符串,例如:

 

private static final String MY_URI = "com.test.dataContentProvider";

 

3.如果你的应用程序可以提供多个ContentProvider,需要写几个path,例如

 

private static final String MY_PATH1 = "path1";
private static final String MY_PATH2 = "path1";

 

 

4.定义与你的path对应的代码,当匹配成功后,会返回这个代码,我们这里使用

 

public static final int SUCCESS1 = 1;
public static final int SUCCESS2 = 2;

  

 

 

 5.将uri添加到UriMatcher,例

 

static
{
	UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
	uriMatcher.addURI(MY_URI, MY_PATH1, SUCCESS1);
	uriMatcher.addURI(MY_URI, MY_PATH2, SUCCESS2);
}

 

如果你没用到path,则addURI的第二个参数设置为null 

 

 

 6.编写ContentProvider的方法,这里举例query方法

 

@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
	switch (uriMatcher.match(uri)) {
		case SUCCESS1: {//这个对应content://com.test.dataContentProvider/path1
			return null;
		 }
		case SUCCESS2:{//这个对应content://com.test.dataContentProvider/path2		{
			return null;
		}
	}
	return null;
}

 

 

 7.在AndroidManifest.xml中配置ContentProvider

 

<provider android:name="com.test.provider.DataContentProvider"
	android:authorities="com.test.dataContentProvider" />

com.test.provider.DataContentProvider是你的自定义的ContentProvider的路径,包括包名和类名

com.test.dataContentProvider是你在上面定义的MY_URI的值

 

使用:

 

 1.定义要使用的ContentProvider的URI字符串,注意:与编写ContentProvider时不同,这时定义的URI是完整的URI地址

 

private static final String MY_URI = "content://com.test.dataContentProvider";

  

如果你使用path了,则这么写

 

private static final String MY_URI1 = "content://com.test.dataContentProvider/path1";
private static final String MY_URI2 = "content://com.test.dataContentProvider/path2";

 

 

2.得到URI对象

 

Uri uri = Uri.parse(MY_URI);

 

 

 3.得到Cursor

 

Cursor cursor =  getContentResolver().query(uri, null, null, null, null);

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值