《第一行代码-Android》学习笔记(十三)
2015-02-14 23:38
573 查看
如何实现自己的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);
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 第一行代码(第二版)学习笔记(二)
- 《第一行代码-Android》学习笔记(二十四)
- 《第一行代码-Android》学习笔记(十一)
- 《第一行代码-Android》学习笔记(十)
- 《第一行代码-Android》学习笔记(二十二)
- 《第一行代码-Android》学习笔记(三)
- 《第一行代码-Android》学习笔记(二)
- 《第一行代码-Android》学习笔记(十二)
- 《第一行代码-Android》学习笔记(七)
- Android 第一行代码(第二版)学习笔记(一)
- 《第一行代码-Android》学习笔记(十六)
- 《第一行代码-Android》学习笔记(一)
- 《第一行代码-Android》学习笔记(八)
- 《第一行代码-Android》学习笔记(四)
- 《第一行代码-Android》学习笔记(二十五)
- 《第一行代码-Android》学习笔记(二十)