ContentProvider
2016-05-06 23:56
676 查看
实现ContentProvider:
1.继承抽象类ContentProvider 实现 一系列对于数据的增删改查方法
2.在AndroidMainfest.xml文件中完成注册:
<provider
android:name = "com.******************"
android:authorities="com.-********************">
</provider>//authorities属性是全局唯一的
Uri 通用资源标识符
UriMatcher类 解析Uri
UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
matcher.addURI(“********”,“******”,*);
//匹配成功返回code值 否则返回-1
mather.match(uri)
首先与找通过addURI()方法添加进来的Uri匹配
匹配成功则返回code值,否则返回-1
ContentResolver:
使用ContentResolver操作ContentProvider中的数据:
当外部应用需要对 ContentProvider中的数据进行增加、删除、修改和查询时,可用ContentResolver完成。
使用Activity提供的getContentResolver()方法获取ContentResolver对象
ContentResolver类提供了与ContentProvider类相同签名的四个方法
增 删 改 查
example:-----------------------------------------------------------------------------------------------------------------
//在使用Contacts 要导入import android.provider.ContactsContract.Contacts;
//使用Phone 要导入import android.provider.ContactsContract.CommonDataKinds.Phone;
setContentView(R.layout.activity_main);
ContentResolver cr = getContentResolver();
Cursor c = cr.query(Contacts.CONTENT_URI, new String[]{Contacts._ID,Contacts.DISPLAY_NAME}, null, null, null);
if(c!=null)
{
while(c.moveToNext())
{
int id = c.getInt(c.getColumnIndex("_id"));
Log.i("info","_id:"+id);
String text = c.getString(c.getColumnIndex("display_name"));
Log.i("info","name:"+text);
Cursor c1 = cr.query(Phone.CONTENT_URI, new String[]{Phone.NUMBER,Phone.TYPE}, Phone.CONTACT_ID+"="+id, null, null);
if(c!=null)
while(c1.moveToNext())
{
int type= c1.getInt(c1.getColumnIndex(Phone.TYPE));
if(type==Phone.TYPE_HOME){
Log.i("info", c1.getString(c1.getColumnIndex(Phone.NUMBER)));
}
if(type==Phone.TYPE_MOBILE){
Log.i("info", c1.getString(c1.getColumnIndex(Phone.NUMBER)));
}
}
c1.close();
}
}
c.close();
}
1.继承抽象类ContentProvider 实现 一系列对于数据的增删改查方法
2.在AndroidMainfest.xml文件中完成注册:
<provider
android:name = "com.******************"
android:authorities="com.-********************">
</provider>//authorities属性是全局唯一的
Uri 通用资源标识符
UriMatcher类 解析Uri
UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
matcher.addURI(“********”,“******”,*);
//匹配成功返回code值 否则返回-1
mather.match(uri)
首先与找通过addURI()方法添加进来的Uri匹配
匹配成功则返回code值,否则返回-1
ContentResolver:
使用ContentResolver操作ContentProvider中的数据:
当外部应用需要对 ContentProvider中的数据进行增加、删除、修改和查询时,可用ContentResolver完成。
使用Activity提供的getContentResolver()方法获取ContentResolver对象
ContentResolver类提供了与ContentProvider类相同签名的四个方法
增 删 改 查
example:-----------------------------------------------------------------------------------------------------------------
//在使用Contacts 要导入import android.provider.ContactsContract.Contacts;
//使用Phone 要导入import android.provider.ContactsContract.CommonDataKinds.Phone;
setContentView(R.layout.activity_main);
ContentResolver cr = getContentResolver();
Cursor c = cr.query(Contacts.CONTENT_URI, new String[]{Contacts._ID,Contacts.DISPLAY_NAME}, null, null, null);
if(c!=null)
{
while(c.moveToNext())
{
int id = c.getInt(c.getColumnIndex("_id"));
Log.i("info","_id:"+id);
String text = c.getString(c.getColumnIndex("display_name"));
Log.i("info","name:"+text);
Cursor c1 = cr.query(Phone.CONTENT_URI, new String[]{Phone.NUMBER,Phone.TYPE}, Phone.CONTACT_ID+"="+id, null, null);
if(c!=null)
while(c1.moveToNext())
{
int type= c1.getInt(c1.getColumnIndex(Phone.TYPE));
if(type==Phone.TYPE_HOME){
Log.i("info", c1.getString(c1.getColumnIndex(Phone.NUMBER)));
}
if(type==Phone.TYPE_MOBILE){
Log.i("info", c1.getString(c1.getColumnIndex(Phone.NUMBER)));
}
}
c1.close();
}
}
c.close();
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories