编写:
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);