《第一行代码-Android》学习笔记(十三)
来源:互联网 发布:java 获取键盘输入 编辑:程序博客网 时间:2024/06/05 20:47
如何实现自己的content provider:
1.创建内容提供器:
a) 编写一个类去继承ContentProvider类,并实现里面的六个方法:
i. onCreate():初始化的时候会调用,只有当存在ContentResolver尝试访问内容提供器的时候它才会被初始化
ii. query():
iii. update():
iv. delete():
v. insert():
vi. getType():更加传入的Uri返回相应的MIME类型。
b) URI格式:
i. content://com.gu.demo.provider/*:表示匹配任意表
ii. content://com.gu.demo.provider/table1/#:表示匹配table1表中任意一行。
最后可以借助UriMatcher这个类进行对不同的Uri分类匹配。
static
{
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(AUTHORITY, "book", BOOK_DIR);
uriMatcher.addURI(AUTHORITY, "book/#", BOOK_ITEM);
}
switch(uriMatcher.match(uri))
{
case BOOK_DIR :
cursor = db.query(DBHelper.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
break;
case BOOK_ITEM :
String bookId = uri.getPathSegments().get(1);
cursor = db.query(DBHelper.TABLE_NAME, projection, "id=?", new String[] { bookId }, null, null,sortOrder);
break;
default:
break;
}
c) 在Content provider项目中的配置文件中需要对provider进行配置:
<provider
android:name="com.gu.demo.provider.BookProvider"
android:authorities="com.gu.demo.provider"
android:exported="true" >
</provider>
此处会有黄色警告,警告应用数据会因此被外界访问的危险。并且这里的 android:exported="true" 必须要配置,否则外界将无法访问此content provider。
d) 在另一个项目中利用contentResolver对象和Uri定位到设计好的content provider中,进行相应的访问。
Uri uri = Uri.parse("content://com.gu.demo.provider/book/1");
Cursor cursor = this.getContentResolver().query(uri, null, null, null, null);
- 《第一行代码-Android》学习笔记(十三)
- 《第一行代码-Android》学习笔记(二十三)
- Android第一行代码学习笔记总结
- 《Android第一行代码》学习笔记
- 《Android第一行代码》学习笔记
- FrameLayout《第一行代码Android》学习笔记
- Android第一行代码学习笔记
- Android学习笔记_《第一行代码》
- 《第一行代码》Android 学习笔记
- 《第一行代码 Android》学习笔记1
- 《第一行代码-Android》学习笔记(一)
- 《第一行代码-Android》学习笔记(二)
- 《第一行代码-Android》学习笔记(三)
- 《第一行代码-Android》学习笔记(四)
- 《第一行代码-Android》学习笔记(五)
- 《第一行代码-Android》学习笔记(六)
- 《第一行代码-Android》学习笔记(七)
- 《第一行代码-Android》学习笔记(八)
- 《第一行代码-Android》学习笔记(十二)
- 动态规划最长子串问题
- leetcode:Sort Colors 菜鸟解法
- jstl <fmt:formatNumber>标签学习笔记
- git add时create mode 100644到底是什么含义?
- 《第一行代码-Android》学习笔记(十三)
- Java中的两种GC方式
- Git常用命令总结
- 新年来临之际,一点小小的决心和感悟
- android.content.res.Resources$NotFoundException: String resource ID异常总结
- 《第一行代码-Android》学习笔记(十四)
- 《第一行代码-Android》学习笔记(十五)
- 安装python问题
- 《第一行代码-Android》学习笔记(十六)