ContentProvider(内容提供者)与ContentResolver(内容访问者)
来源:互联网 发布:神话打电话软件 编辑:程序博客网 时间:2024/06/05 13:19
今天突然想吃披萨,然后上网一搜,哦,附近有家必胜客,就在***,上面显示是九点关门,那我现在去就能吃到。吃披萨的时候突然灵光一现,对了,网站访问流程不正是这个过程吗,网站里的内容正是我想吃的披萨,我要想吃还得知道它的地址,当然有没有关门也是必须的,我得知道网站有没有发布内容呀
<provider
android:authorities="com.Wwoo0.PERSON"
android:name="com.Wwoo0.MyContentProvider"
android:exported="true"
></provider>
关于ContentProvider刚刚举了一个小例子作为说明它的原理,其实也就是以上在清单文件中的三个配置名称一个是网址,二是内容,三是是否发布
接下来如何在数据库中创建使用它呢,在这里分享下有关查询方法
1.定义类继承ContentProvider,根据需要重写内部方法
public class MyContentProvider extends ContentProvider {
private SQLiteDatabase db;
private UriMatcher uriMatcher;
@Override
public boolean onCreate() {
Log.i("test","onCreate");
DbUtil dbUtil = new DbUtil(getContext(), "person.db", null, 2);
db = dbUtil.getReadableDatabase();
//实例化URI匹配器
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
//添加规则
//01.查询所有 content://com.zking.g150820_andorid16_sqlite.PERSON/student
uriMatcher.addURI("com.Wwoo0.PERSON","student",1);
//02.查询单个 content://com.Wwoo0.PERSON/student/3
uriMatcher.addURI("com.zking.Wwoo0.PERSON","student/#",2);
return false;
}
@Nullable
@Override
public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {
//根据URI匹配器开始匹配Uri
int code=uriMatcher.match(uri);
switch (code) {
case 1:
//查询所有
Log.i("test","query所有");
//获取数据库中所有的数据
return db.query(false,"student",strings,s,strings1,null,null,s1,null);
case 2:
//查询单个
//获取# 的值
long id=ContentUris.parseId(uri);
Log.i("test","query单个");
return db.rawQuery("select * from student where _id=?",new String[]{id+""});
}
return null;
}
@Nullable
@Override
public String getType(Uri uri) {
Log.i("test","getType");
return null;
}
@Nullable
@Override
public Uri insert(Uri uri, ContentValues contentValues) {
Log.i("test","insert");
return null;
}
@Override
public int delete(Uri uri, String s, String[] strings) {
Log.i("test","delete");
return 0;
}
@Override
public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {
Log.i("test","update");
return 0;
}
2.有发布者自然有访问者,根据网址进入查询(查询所有或单个查询)
public class ContentResolver extends AppCompatActivity {private ContentResolver cr;
private EditText et_contentresolver_id;
private Uri uri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contentresolver);
//获取内容访问者
cr = getContentResolver();
et_contentresolver_id = (EditText) findViewById(R.id.et_contentresolver_id);
}
public void getData(View view){
//判断输入框的值是否为空
if(TextUtils.isEmpty(et_contentresolver_id.getText().toString())){
//查询所有
uri = Uri.parse("content://com.Wwoo0.PERSON/student");
}else{
//查询单个
//01.直接query传参
//02.类似web http://localhost:8080/webProject/xxx.action?id=3
//03.Uri匹配器
String id=et_contentresolver_id.getText().toString();
uri = Uri.parse("content://com.Wwoo0.PERSON/student/"+id);
}
Cursor cursor=cr.query(uri,null,null,null,null);
//SimleCursorAdapter
while (cursor.moveToNext()){
int id=cursor.getInt(cursor.getColumnIndex("_id"));
String name=cursor.getString(cursor.getColumnIndex("name"));
int age=cursor.getInt(cursor.getColumnIndex("age"));
Log.i("test",id+" "+name+" "+age);
}
}
1 1
- ContentProvider内容提供者与ContentResolver内容访问者
- ContentProvider内容提供者与ContentResolver内容访问者
- ContentProvider内容提供者与ContentResolver内容访问者
- ContentProvider(内容提供者)与ContentResolver(内容访问者)
- ContentProvider内容提供者与ContentResolver内容访问者(二)
- 25.ContentProvider自定义内容提供者与ContentResolver内容访问者
- Android之ContentProvider(内容的提供者)与ContentResolver(内容访问者)
- ContentProvider内容提供者 和 ContentResolver内容访问者
- Android----ContentProvider(内容提供者) ContentResolver(内容访问者)
- ContentProvider内容提供者和ContentResolver内容访问者
- ContentProvider内容提供者和ContentResolver内容访问者
- ContentProvider内容提供者和ContentResolver内容访问者
- Android ContentProvider(内容提供者 )+ContentResolver(内容访问者)
- android的与ContentResolver(内容访问者)对ContentProvider(内容提供者)的增删查改
- Android 中ContentProvider内容提供者和ContentResolver内容访问者
- 内容提供者 ContentProvider 内容访问者 ContentResolver 框架搭建
- Android:内容提供者(ContentProvider)和内容访问者(ContentResolver)
- 给大家简述下ContentProvider(内容提供者)与ContentResolver(内容访问者)如何使用。
- 《客户端脚本语言-JavaScript》
- 自定义View
- 《MySQL高效编程》学习笔记--基础篇
- JavaSE_16th_常用类——String类常用方法
- CentOS7developer
- ContentProvider(内容提供者)与ContentResolver(内容访问者)
- POJ1426 Find The Multiple
- Cannot change version of project facet Dynamic Web Module to 2.4的原因和解决方法
- C语言------如何实现字符串数组和整形数组在终端上任意输
- HDU4001-To Miss Our Children Time
- 面试题-华为-数组去重与排序-2
- python中zip函数的使用方法
- URAL - 2080 Wallet 树状数组+last数组
- Android的休眠唤醒机制wake_lock机制