(android 基础知识之数据存储) ContentResolver
来源:互联网 发布:烈焰遮天全套完整源码 编辑:程序博客网 时间:2024/05/20 15:36
当应用程序需要与别的应用进行交互时,需要使用Android提供的两个类,ContentProvider和ContentResolver来实现相关功能。ContentProvider用来提供内容给别的应用来操作,ContentResolver用来操作(包括查询、插入等)别的应用数据,当然在自己的应用中也可以。 本着重讲解ContentResolver的用法。
可用通过Context来获取ContentResolver的实例,在Activity中,可以直接使用下面这句:
- ContentResolver resolver = this.getContentResolver();
获取到该对象后,可实现如下一些常用的功能:
- //查询:
- public final Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
- //新增
- public final Uri insert(Uri url, ContentValues values)
- //更新
- public final int update(Uri uri, ContentValues values, String where, String[] selectionArgs)
- //删除
- public final int delete(Uri url, String where, String[] selectionArgs)
查询
- <strong>query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)</strong>
描述:根据指定的URI,返回一个游标结果集Cursor。为了提高性能,使用该方法最好能遵照以下的建议:1)对于返回结果,使用projection参数指定记录中包含的字段,以避免大量不用的字段被检索,浪费资源;2)在selection参数中使用类似phone=?的问号表达式来指定检索条件中的字段值,尽量不要使用指定值(比如phone='123'),这样有利于查询的系统缓存。
参数:
uri 表示用于获取什么内容的URI,比如通讯录为Phone.CONTENT_URI
projection 字段名称数组,比如要获取联系人的显示名称、电话号码、头像ID、联系人ID,则值为:
- new String[] { Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID,Phone.CONTACT_ID }
selection 查询条件字符串,类似sql语句中的where子句,比如:display_name=? and number=?
selectionArgs 参数selection中问号(?)对应的参数值数组
sortOrder 对应sql语句的order by子句,如采用默认排序,值可传null值。
实例代码:实现查询指定用户(号码)发送到本机的短信信息
import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class ContentResolverActivity extends Activity { private Button start; //查询手机全部短信 final String SMS_URL_ALL="content://sms/";@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.layout_contentresolver);start=(Button) findViewById(R.id.start);start.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//查看手机短信ContentResolver resolver = getContentResolver(); //查询返回数据数据String[] projection=new String[]{"body","date"};//查询条件String selection=new String("address=?");//匹配查询条件的值----待定String[] selectionargs=new String[]{"+8618673109540"};//是否排序操作String sortOrder="date desc";//地址解析Uri uri = Uri.parse(SMS_URL_ALL); //游标实例化Cursor cursor=resolver.query(uri, projection, selection, selectionargs, sortOrder);//数据查询if(cursor.moveToFirst()){String smsbody;String date;int smsbodyColumn=cursor.getColumnIndex("body");int dateColumn=cursor.getColumnIndex("date");do{//信息内容smsbody=cursor.getString(smsbodyColumn);//信息接收时间SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss"); Date d = new Date(Long.parseLong(cursor.getString(dateColumn))); date = dateFormat.format(d); Toast.makeText(ContentResolverActivity.this, "信息内容:"+smsbody+",接收时间:"+date, Toast.LENGTH_LONG).show(); System.out.println("信息内容:"+smsbody+",接收时间:"+date);}while(cursor.moveToNext());}//游标关闭cursor.close();}});}}
- (android 基础知识之数据存储) ContentResolver
- android数据存储ContentProvider数据获取ContentResolver
- 数据存储之SqliteOpenHelper、ContentProvider、ContentResolver详解
- 【android学习之十一】——数据存储3:数据共享ContentProvider,ContentResolver
- Android开发基础知识整理之数据存储
- Android基础知识(6)—数据持久化之数据存储
- Android --- 共享数据 -- ContentResolver
- 基础知识:android 数据存储--->文件存储
- android之ContentResolver和ContentProvider
- android之ContentResolver与ContentProvider
- android之ContentResolver与ContentProvider
- android之ContentResolver与ContentProvider
- android之ContentResolver与ContentProvider
- Android之ContentProvider与ContentResolver
- Android 之 ContentProvider 与 ContentResolver
- Android之内容提供者ContentResolver
- android之ContentResolver内容访问者
- Android 图像存储在SD卡ContentResolver
- 扩展Oozie
- CUDA代码笔记 - cudaOpenMP
- Oracle9i添加 wm_concat函数
- 素材推荐
- Python调用飞信接口发送短信
- (android 基础知识之数据存储) ContentResolver
- 游标使用
- vb中MSHFlexGrid控件导出到Excel
- 关于九宫格
- 用Apache htpasswd管理SVN帐户
- curl_getinfo的巧用
- SQL查询入门(下篇)
- 《C关键字分析》之sizeof,enum、union和struct
- typeid及RTTI