android四大组件之ContentProvider个人总结
来源:互联网 发布:网络口碑双刃剑图片 编辑:程序博客网 时间:2024/05/16 15:54
对于郭神的第一行代码的摘录
ContentProvider(内容控制器)主要提供在不同应用程序之间实现数据共享的功能,允许一个应用程序访问另一个应用程序中的数据,同时还能保证被访问数据的安全性。
ContentProvider 的用法分为两种:
1.使用context的getContentResolver()方法获得一个ContentResolver对象,使用该对象的qurey、insert、update以及delete等方法。
内容Uri最标准的格式的写法:
content://com.example.app.provider/table1
com.example.app.provider是权限
/table是路径
以上还只是一个URI字符串,需要通过
Uri uri = Uri.parse("content://com.example.app.provider/table1")将内容URI字符串解析成Uri对象。
1.查询:(使用getContentResolver获得ContentResolver对象,使用其query方法获得cursor对象,cursor对象完成查询操作)
使用:Cursor cursor = getContentResolver().query(uri,projection,Selection,SelectionArgs,sortOrder);
获得一个cursor对象,String column1 = cursor.getString(cursor.getColumnIndex("column1"));就可以完成查询操作。
2.添加数据:(使用getContentResolver获得ContentResolver对象,使用其insert方法将ContentValues添加进去)
ContentValues values = new ContentValues();
values.put("column1", "text");
getContentResolver().insert(uri.values);
3.更新数据(把column1里面的内容清空)
ContentValues values = new ContentValues();
values.put("column1", “”);
getContentResolver().update(uri, values,"column1= ?and column2 = ?", new String[] {"text", "1"});
//前面刚往column1里面添加了text,这里update一下
4.删除数据
getContentResolver().delete(uri, "column2 = ?", new String[] {"1"});
到此,ContentResolver的内容全部结束。
下面开始讲自定义ContentProvider的内容,参考郭神代码以及各路CSDN大神的代码。
2.创建自己的内容控制器为我们的程序的数据提供外部访问接口(extends ContentProvider)。
ContentProvider是一个抽象类,里面包含了6个abstract method,必须实现这六个方法。
此外还需要在AndroidManifest文件里使用<provider/>对该ContentProvider进行配置
<manifest.... > <application android:icon="@drawable/icon" android:label="@string/app_name"> <provider android:name=".PersonContentProvider" android:authorities="com.ljq.providers.personprovider"/> </application></manifest>contentProvider采用了authorities(主机名/域名)对它进行唯一标识。
粗略的认识就是:
1新建一个项目,建一个myDatabaseProvider类 extends ContentProvider,实现后者的六个抽象方法,这六个抽象方法都会根据传入的Uri对象执行相应的操作
这些操作全都写在实现的逻辑里。
以query为例
在实现public Cursor query()会返回一个Cursor对象,在后面的MainActivity里面就会根据这个Cursor对象执行cursor.getString()操作。。。等等
注意,主程序会传一个URI字符串进去,parse成Uri对象,先getContentResolver().query(XXXXX)//contentProvider对象的各种方法都需要传Uri对象进去才能执行。
返回Cursor也好,直接对table进行update,delete也好,都是需要uri参数的。
所以,只要知道了com.example.app.provider/table1就可以对表进行操作了。
例如com.example.Activity1里的数据库就可以暴露给com.example.Activity2的程序使用,后者只要知道了这个Uri(权限),就可以对别的程序里面的数据进行操作。
这也就是所谓数据共享的意思。
- android四大组件之ContentProvider个人总结
- Android的四大组件之ContentProvider总结
- Android的四大组件之ContentProvider总结
- Android的四大组件之ContentProvider总结
- Android四大组件之四:ContentProvider总结
- Android的四大组件之ContentProvider总结
- Android四大组件之ContentProvider总结
- Android个人每天总结.doc(day04四大组件之:内容提供者ContentProvider)
- Android四大组件之ContentProvider
- android四大组件之ContentProvider
- android四大组件之 ContentProvider
- Android四大组件之ContentProvider
- Android四大组件之ContentProvider
- android 四大组件之ContentProvider
- Android四大组件之ContentProvider
- Android四大组件之ContentProvider
- android四大组件之ContentProvider
- android四大组件之ContentProvider
- 寻找神格
- QJSON的编译方法
- CYC-数据解析3 - 加载图片
- VPN报789错误
- HTML5拖放
- android四大组件之ContentProvider个人总结
- 控制台I/O
- java设计模式之外观模式
- Linux下安装配置JDK
- MySQL InnoDB MVCC实现原理
- 推荐!国外程序员整理的Java资源大全
- 关于openwrt 中继 操作补充说明
- 查看SDImageCache缓存图片地址(暂时仅知道模拟器上的地址)
- Android Studio在SVN上创建分支