博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android四大组件之ContentProvider(学习笔记)
阅读量:4483 次
发布时间:2019-06-08

本文共 2546 字,大约阅读时间需要 8 分钟。

ContentProvider

程序通过uri访问数据
继承contentprovider实现一系列对于数据的增删改查等方法,需在AndroidMainfest中完成对于ContentProvider的注册
  onCreate方法,在创建后被调用
  onDelete方法,根据Uri删除selection指定的条件所匹配的全部记录
  insert,根据uri插入Values对应的数据
  update,根据uri修改selection指定的条件所匹配的全部记录
  query,根据uri查询出selection指定的条件所匹配的全部记录,并且可以指定查询什么列,
  gettype返回当前uri的mime类型,如果该uri对应的数据可能包括的多条记录,那么mime类型的字符串,就是以vnd.android.dir/开头,如果该url对应的数据只有一条记录,该mime类型字符串,就是以vndAndroid.cursor.item/开头

UriMatcher类

uriMatcher matcher= new UriMatcher(UriMatcher.No_MATCH);
UriMatcher.No_MATCH表示不匹配任何路径的返回码
matcher.addURI("com.imooc.provider","music",1);
往UriMatcher类里添加一个拼凑的Uri
UriMatcher作为一个Uri的容器,容器里包含着我们即将要操作的Uri
如果通过match方法匹配成功后就返回code值
matcher.match(uri)
首先找到通过addURI方法添加进来的Uri匹配
匹配成功则返回设置的code值,反之,返回一个UriMatcher.NO_MATCH常量(-1)

 

ContentResolver类

外部应用通过ContentResolver类来对ContentProvider中的数据进行添加、删除、查询

调用getContentResolver()方法来获取ContentResolver对象

 

import android.content.ContentResolver;import android.content.ContentUris;import android.content.ContentValues;import android.net.Uri;import android.os.Bundle;import android.provider.ContactsContract;import android.provider.ContactsContract.CommonDataKinds.StructuredName;import android.provider.ContactsContract.RawContacts;import android.provider.ContactsContract.CommonDataKinds.Phone;import android.support.v7.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //在联系人中插入数据          //获取ContentResolver对象,找到指定的ContentProvider,并获取ContentProvider的数据        ContentResolver cr=getContentResolver();        ContentValues contentValues=new ContentValues();          //返回所要寻找文件的Uri        Uri uri=cr.insert(RawContacts.CONTENT_URI,contentValues);        Long raw_content_id= ContentUris.parseId(uri);        contentValues.clear();          //插入人名        contentValues.put(StructuredName.RAW_CONTACT_ID,raw_content_id);        contentValues.put(StructuredName.DISPLAY_NAME,"zhangsan");        contentValues.put(StructuredName.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE);        uri=cr.insert(ContactsContract.Data.CONTENT_URI,contentValues);          //插入电话信息        contentValues.clear();        contentValues.put(Phone.RAW_CONTACT_ID,raw_content_id);        contentValues.put(Phone.NUMBER,"1333333333");        contentValues.put(Phone.MIMETYPE,Phone.CONTENT_ITEM_TYPE);        uri=cr.insert(ContactsContract.Data.CONTENT_URI,contentValues);    }}

 

转载于:https://www.cnblogs.com/edwardru/p/5985272.html

你可能感兴趣的文章
项目测试Wikis(1)门户_用户接口
查看>>
MUI 样式按钮的禁用
查看>>
选择排序线性顺序版
查看>>
为什么要把系统拆分成分布式的,为啥要用Dubbo?
查看>>
servlet乱码问题
查看>>
从C到C++ (2)
查看>>
欢迎来到我的博客!
查看>>
LeedCde 题解目录
查看>>
Extjs实现Grid表格显示【一】
查看>>
java 单例模式 几个实现方法
查看>>
JavaBean简单示例
查看>>
oracle select in超过1000条报错解决方法
查看>>
js对cookie的操作方法
查看>>
利用Apach ab对nodejs进行并发负载的压力测试
查看>>
Appium scroll 滑动查找
查看>>
php 文件操作之抓取网站图片
查看>>
hibernate框架工具类
查看>>
face detection and aligh
查看>>
numpy的使用学习
查看>>
Python_代码练习_写一个判断是否为小数的函数
查看>>