【Android四大组件——ContentProvider】我自横刀向天笑,去留肝胆两昆仑。这篇文章主要讲述Android四大组件——ContentProvider相关的知识,希望能为你提供帮助。
ContentProvider数据提供者
用与程序与程序之间的数据传递。
ContentProvider提供了其他程序调用该程序内部数据的调用方法。
/* * 用来定义其他程序调用该程序数据时 * 可以进行的操作。 */ public class MyContentProvider extends ContentProvider {@Override//在ContentProvider创建后被调用 public boolean onCreate() { // TODO Auto-generated method stub return false; }@Override//根据Uri,插入valuse对应的数据 public Uri insert(Uri uri, ContentValues values) { // TODO Auto-generated method stub return null; }@Override//根据Uri删除指定条件(selection和selectionArgs)匹配的全部记录 public int delete(Uri arg0, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; }@Override//根据Uri查询指定条件(selection和selectionArgs)匹配的全部记录,projection(列名),sortOrder(排序) public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // TODO Auto-generated method stub return null; }@Override//根据Uri修改指定条件(selection)匹配的全部记录,修改为values对应的数据 public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; }@Override//返回当前Uri的MIME类型,如果Uri对应数据可能包含多条记录 //那么MIME类型字符串就以vnd.android.dir/开头 //如果Uri对应数据只有一条,那么MIME类型字符串就以vnd.android.cursor.item/开头 public String getType(Uri uri) { // TODO Auto-generated method stub return null; } }
记得注册:
< provider android:name=".MyContentProvider" android:authorities="com.example.z_contentprovider"> < /provider>
一般调用ContentProvider的方法是通过Uri对象
![Android四大组件——ContentProvider](http://img.readke.com/220416/211IC317-0.jpg)
文章图片
![Android四大组件——ContentProvider](http://img.readke.com/220416/211IB424-1.jpg)
文章图片
还可以调用系统的ContentProvider
/** * 数据提供者ContentProvider: * 四大组件,存储方式,可以跨程序处理数据 * 其他存储形式都只是在单独一个程序中完成一个数据的共享 * 不能调用其他程序的数据 */ /** * 其他程序调用自定义的ContentProvider时,需要用通用资源表字符(Uri)记录授权信息 * android:authorities="com.example.z_contentprovider" * 这是使用ContentProvider需要在AndroidManifest.xml中组成的一个属性,就是授权记录的名字。 */ public class MainActivity extends Activity {@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** * 系统提供的ContentProvider可以调用系统短信,联系人,图片音乐等资源。 * ContentResolver对象和ContentProvider一样提供了通过uri的增删查改方法。 */ ContentResolver cp = getContentResolver(); ContentValues values = new ContentValues(); //cp.insert(url, values); //cp.delete(url, where, selectionArgs); //cp.update(url, values, where, selectionArgs) //cp.insert(url, values); } }
如果有什么错误,或者我理解错误或不当的,恳请大家纠正,谢谢!嘻嘻嘻~
推荐阅读
- android中Path的使用
- Android学习总结 ———— Handler 的使用
- Android键盘事件
- Android测试(从零开始2——local单元测试)
- 安卓开源项目周报0315
- Android Activity 和 ViewGroup中事件触发和传递机制
- android shape.xml 属性详解
- C#方法代理/委托(delegate)用法介绍和示例
- C# GroupBox类用法示例介绍