一个ContentProvider的Demo
2015-06-02 18:29
766 查看
第一:在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是系统自动运行的
*/@Overridepublic boolean onCreate() {// TODO Auto-generated method stub<span style="white-space:pre"> </span>dbManager=new DBMaanger(getContext());return false;}@Overridepublic Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,String arg4) {// TODO Auto-generated method stubswitch (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;}@Overridepublic int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {<span style="white-space:pre"> </span>//更新// TODO Auto-generated method stubswitch (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;}}创建一个新的Android项目 在一个Test类中
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
相关文章推荐
- 如何自定义一个优雅的ContentProvider
- PHP如何使用GeoIP数据库
- PHP数组排序方法总结
- PHP中常用代码块集锦
- PHP学习:文件操作
- PHP读取大文件的几种方法
- 使用PHP制作 简易员工管理系统之四(完善主界面以及显示员工信息)
- thinkphp时间戳转化
- php加载速度提高方法
- php怎么将数组数组转化为json格式的数据
- 使用PHP制作 简易员工管理系统之三(管理员登陆界面以及数据库验证)
- PHP正则表达式报错分析
- windows下PHP不能开启pgsql扩展的解决方法
- php学习随记3
- 关于stdClass
- PHP Cookie与Session的使用与区别
- php使用GD实现颜色渐变实例
- PHP准确取得服务器IP地址的方法
- 解决RadioButton+FragmentPagerAdapter+Fragment切换页面数据加载的问题
- 使用PHP制作 简易员工管理系统之二(管理员登陆界面以及验证)