一个ContentProvider的Demo
来源:互联网 发布:java scanner语句用法 编辑:程序博客网 时间:2024/06/06 08:50
第一:
在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/insertprivate staticfinal 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);//updateuriMatcher.addURI(AUTHORITY, "person/update", PERSON_UPDATE_CODE);//deleteuriMatcher.addURI(AUTHORITY, "person/delete", PERSON_DELETE_CODE);//getAlluriMatcher.addURI(AUTHORITY, "person/getAll", PERSON_GETALL_CODE);}@Overridepublic int delete(Uri arg0, String arg1, String[] arg2) {// TODO Auto-generated method stubswitch (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;}@Overridepublic String getType(Uri arg0) {<span style="white-space:pre"></span>//获取数据类型 系统自己运行// TODO Auto-generated method stubswitch (uriMatcher.match(arg0)) {case PERSON_GETALL_CODE://返回多条的MIME-typereturn "vnd.android.cursor.dir/person";default:break;}return null;}@Overridepublic Uri insert(Uri arg0, ContentValues arg1) { //添加// TODO Auto-generated method stubswitch (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;}}
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
0 0
- 一个ContentProvider的Demo
- ContentProvider的一个例子
- 17 一个ContentProvider的例子
- ContentProvider 实例详解一(创建一个自己的ContentProvider)
- Android Custom ContentProvider Demo
- ContentProvider测试 Demo
- ContentProvider使用Demo
- Demo:ContentProvider 内容提供者
- Android 自定义ContentProvider Demo
- Android--ContentProvider小demo
- MapBar的一个Demo
- wxMenu的一个demo
- IHttpAsyncHandler 的一个DEMO
- IHttpAsyncHandler 的一个DEMO
- 一个绘画的Demo
- 一个iBatis的demo
- UIPageControl的一个Demo
- ibatis的一个demo
- Android 滑动效果入门篇(二)—— Gallery
- vs中c++的反汇编分析
- 运行yum出现"Thissystem is not registered with RHN”的解决方法
- SimpleXML使用详解
- js中去除数组中的重复项
- 一个ContentProvider的Demo
- SublimeText2如何安装PackageControl和Emmet插件
- Prime Bases
- Ubuntu下配置Python数据分析环境
- Windows系统无法安装(分区形式为GPT形式 或者 无法创建新的系统分区,也无法定位系统分区)
- 11个vs调试技巧
- hdu 1506 Largest Rectangle in a Histogram(dp)
- KVO
- 解决tomcat服务器内存溢出