第一:
在AndroidMainfest.xml 中 的<application>标签中进行进行配置
<pre name="code" class="html"><span style="white-space:pre"> </span><provider
<span style="white-space:pre"> </span> android:name="content.PersonContent"
android:authorities="com.mirs.demotoone.content.PersonContent"
android:exported="true"
></provider>
创建一个类 继承于 Contentprovider
public class PersonContent extends ContentProvider{
//content://com.mirs.demotoone.content.PersonContent/person/insert
private static final String AUTHORITY="com.mirs.demotoone.content.PersonContent"; // 这里我是写成和xml中的一样
private DBMaanger dbManager;
private static final int PERSON_INSERT_CODE = 0; //操作码
private static final int PERSON_UPDATE_CODE = 1;
private static final int PERSON_DELETE_CODE = 2;
private static final int PERSON_GETALL_CODE = 3;
private static UriMatcher uriMatcher;
static{
uriMatcher=new UriMatcher(UriMatcher.NO_MATCH);
/**
* 添加一些分机号
* */
//insert
uriMatcher.addURI(AUTHORITY, "person/insert", PERSON_INSERT_CODE);
//update
uriMatcher.addURI(AUTHORITY, "person/update", PERSON_UPDATE_CODE);
//delete
uriMatcher.addURI(AUTHORITY, "person/delete", PERSON_DELETE_CODE);
//getAll
uriMatcher.addURI(AUTHORITY, "person/getAll", PERSON_GETALL_CODE);
}
@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
// TODO Auto-generated method stub
switch (uriMatcher.match(arg0)) { //删除
case PERSON_DELETE_CODE:
SQLiteDatabase db=dbManager.getWritableDatabase();
if(db.isOpen()){
int id=db.delete("perosn",arg1, arg2);
db.close();
return id;
}
break;
default:
throw new IllegalArgumentException("delete"+arg0);
}
return 0;
}
@Override
public String getType(Uri arg0) {<span style="white-space:pre"> </span>//获取数据类型 系统自己运行
// TODO Auto-generated method stub
switch (uriMatcher.match(arg0)) {
case PERSON_GETALL_CODE:// 返回多条的MIME-type
return "vnd.android.cursor.dir/person";
default:
break;
}
return null;
}
@Override
public Uri insert(Uri arg0, ContentValues arg1) { //添加
// TODO Auto-generated method stub
switch (uriMatcher.match(arg0)) {
case PERSON_INSERT_CODE:
SQLiteDatabase db=dbManager.getWritableDatabase();
if(db.isOpen()){
long id=db.insert("perosn", null, arg1);
db.close();
return ContentUris.withAppendedId(arg0, id);
}
break;
default:
throw new IllegalArgumentException("inserto"+arg0);
}
return null;
}
<span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span>Oncreate是系统自动运行的
*/
@Override
public boolean onCreate() {
// TODO Auto-generated method stub<span style="white-space:pre"> </span>
dbManager=new DBMaanger(getContext());
return false;
}
@Override
public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,
String arg4) {
// TODO Auto-generated method stub
switch (uriMatcher.match(arg0)) {
case PERSON_GETALL_CODE:
SQLiteDatabase db=dbManager.getWritableDatabase();
if(db.isOpen()){
Cursor cursor=db.query("person", arg1, arg2, arg3, null, null, arg4);
return cursor;
}
break;
default:
throw new IllegalArgumentException("query"+arg0);
}
return null;
}
@Override
public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {<span style="white-space:pre"> </span>//更新
// TODO Auto-generated method stub
switch (uriMatcher.match(arg0)) {
case PERSON_UPDATE_CODE:
SQLiteDatabase db=dbManager.getWritableDatabase();
if(db.isOpen()){
int id=db.update("person", arg1, arg2, arg3);
db.close();
return id;
}
break;
default:
throw new IllegalArgumentException("update"+arg0);
}
return 0;
}
}
public void testInsert(){
<span style="white-space:pre"> </span>//创建一个uri 调用静态方法
Uri uri=Uri.parse("content://com.mirs.demotoone.content.PersonContent/person/insert");
ContentResolver resolver = getContext().getContentResolver();
ContentValues values=new ContentValues();
values.put("name", "凤姐");
values.put("age", 18);
uri=resolver.insert(uri, values);
long id=ContentUris.parseId(uri);
Log.i(TGA, "添加到"+id);
}
然后 run Ok 成功在Log中看到数据
注意在xml中的
android:exported="true"
不然会出现 java.lang.SecurityException