1.创建provider
public class DemoProvider extends ContentProvider {
public static final int DEMO_DIR=0;
public static final int DEMO_ITEM=1;
public static final String AUTHORITIES="com.demo.provider";
private static UriMatcher sUriMatcher;
private DemoHelper mDemoHelper;
static {
sUriMatcher=new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(AUTHORITIES,"xx",DEMO_DIR);
sUriMatcher.addURI(AUTHORITIES,"xx/#",DEMO_ITEM);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
SQLiteDatabase db=mDemoHelper.getWritableDatabase();
int deletedRows=0;
switch (sUriMatcher.match(uri)){
case DEMO_DIR:
deletedRows=db.delete("name",selection,selectionArgs);
break;
case DEMO_ITEM:
String id=uri.getPathSegments().get(1);
deletedRows=db.delete("name","id=?",new String[]{id});
break;
}
return deletedRows;
}
@Override
public String getType(Uri uri) {
switch (sUriMatcher.match(uri)){
case DEMO_DIR:
return "vnd.android.cursor.dir/vnd.com.demo.provider.name";
case DEMO_ITEM:
String id=uri.getPathSegments().get(1);
return "vnd.android.cursor.item/vnd.com.demo.provider.name";
}
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db=mDemoHelper.getWritableDatabase();
Uri returnUri=null;
switch (sUriMatcher.match(uri)){
case DEMO_DIR:
case DEMO_ITEM:
long newId=db.insert("tablename",null,values);
returnUri=Uri.parse("content://"+AUTHORITIES+"/tablename/"+newId);
break;
}
return returnUri;
}
@Override
public boolean onCreate() {
mDemoHelper=new DemoHelper(getContext(),"xxxx.db",null,1);
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder)
{
SQLiteDatabase db=mDemoHelper.getWritableDatabase();
Cursor cursor=null;
switch (sUriMatcher.match(uri)){
case DEMO_DIR:
cursor=db.query("tablename",projection,selection,selectionArgs,null,null,sortOrder);
break;
case DEMO_ITEM:
String id=uri.getPathSegments().get(1);
cursor=db.query("tablename",projection,"id=?",new String[]{id},null,null,sortOrder);
break;
}
return cursor;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
SQLiteDatabase db=mDemoHelper.getWritableDatabase();
int updateRows=0;
switch (sUriMatcher.match(uri)){
case DEMO_DIR:
updateRows=db.update("name",values,selection,selectionArgs);
break;
case DEMO_ITEM:
String id=uri.getPathSegments().get(1);
updateRows=db.update("name",values,"id=?",new String[]{id});
break;
}
return updateRows;
}
}
2.注册provider
<provider
android:name=".DemoProvider"
android:authorities="com.demo.provider"
android:enabled="true"
android:exported="true">
</provider>