*读取联系人

StringBuilder sb = new StringBuilder();
// 1:得到中间人。
ContentResolver resolver = getContentResolver();
// 2:地址。
// contacts;com.android.contacts:表示2个都可以
String raw_contact_host = "content://com.android.contacts/raw_contacts";
String data_host = "content://com.android.contacts/data";
Uri uri = Uri.parse(raw_contact_host);
Uri data_uri = Uri.parse(data_host);
// 3:查询数据。
Cursor cursor = resolver.query(uri, new String[] { "_id", "display_name" }, null, null, null);
while (cursor.moveToNext()) {
// contact_id
int id = cursor.getInt(cursor.getColumnIndex("_id"));
// ContentResolver resolver2 = getContentResolver();
Cursor data_cursor = resolver.query(data_uri, null, "raw_contact_id=?", new String[] { id + "" }, null)
while (data_cursor.moveToNext()) {
String mimytype = data_cursor.getString(data_cursor.getColumnIndex("mimetype"));
String data = data_cursor.getString(data_cursor.getColumnIndex("data1")); if (mimytype.equals("vnd.android.cursor.item/phone_v2")) {
// 电话号码
sb.append("电话号码:" + data);
} else if (mimytype.equals("vnd.android.cursor.item/name")) {
sb.append("名字:" + data);
} else if (mimytype.equals("vnd.android.cursor.item/organization")) {
sb.append("组织:" + data);
}
}
// data_cursor.close();
String display_name = cursor.getString(cursor.getColumnIndex("display_name"));
sb.append("姓名:" + display_name);
}
cursor.close();
return sb.toString();

*读取短信

resolver = getContentResolver();
add = "content://sms/";
uri = Uri.parse(add);
// 1:得到中间人。
// 2:知道地址。
// 查询所有的短信。
// address:表示发短信的号码,date;发送的日期.body:发送的内容:这些都需要查看表才知道,不需要记忆。
Cursor cursor = resolver.query(uri, new String[] { "address", "date", "body" }, null, null, null);
while (cursor.moveToNext()) {
String address = cursor.getString(cursor.getColumnIndex("address"));
String body = cursor.getString(cursor.getColumnIndex("body"));
int date = cursor.getInt(cursor.getColumnIndex("date"));
System.out.println(address + "--" + body + "----" + date);
}
cursor.close();

*内容提供者

/*
* authorities ;主机名。
* 1:创建一些地址。
* http://www.sina.com/index.html
* 访问别人的数据。
* content://主机名/
* content://com.qf.day15_sqlitedemo1.person/person ------1
*/
public class PersonContentProvider extends ContentProvider {
private static UriMatcher match;
private static final String AUTHORITIES = "com.qf.day15_sqlitedemo1.person";
private PersonSqliteOpenHelper helper;
private SQLiteDatabase db;
static{
//创建匹配器。
match = new UriMatcher(UriMatcher.NO_MATCH);//当不匹配的时候就返回-1
//http://www.sina.com/
//content://com.qf.day15_sqlitedemo1.person/person
match.addURI(AUTHORITIES, "person", 1);//表示查询person里面的所有数据。
match.addURI(AUTHORITIES, "person_id/#", 2);//表示查询person表中的id号为固定值的数据。
match.addURI(AUTHORITIES, "person_name/*", 3);
}
//内容提供者创建的时候调用。
@Override
public boolean onCreate() {
helper = new PersonSqliteOpenHelper(getContext());
db = helper.getWritableDatabase();
return true;
} //查询
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor cursor = null;
//将别的应用的地址跟我们自己定义的地址进行匹配。
int code = match.match(uri);
System.out.println(code);
//对值进行判断。
if(code==1){
cursor = db.query("person", projection, selection, selectionArgs, null, null, null);
}else if(code==2){
//获得id号
int id =Integer.parseInt( uri.getLastPathSegment());
cursor = db.query("person", projection, "_id=?", new String[]{id+""}, null, null, null);
}
return cursor;
}
//返回类型--一般不用
@Override
public String getType(Uri uri) {
return null;
}
//插入数据
@Override
public Uri insert(Uri uri, ContentValues values) {
return null;
}
//删除数据
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return 0;
}
//更新数据
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
return 0;
} }

注:记得配置读写短信和读写联系人的权限

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_SMS" />

内容提供者Content Provider的更多相关文章

  1. 内容提供者(Content Provider)——跨程序共享数据

    内容提供者 Content Provider 应用的数据库是不允许其他应用访问的 内容提供者的作用就是让别的应用访问到你的数据库 自定义内容提供者,继承ContentProvider类,重写增删改查方 ...

  2. Android开发-API指南-Content Provider基础

    Content Provider Basics 英文原文:http://developer.android.com/guide/topics/providers/content-provider-ba ...

  3. Android内容提供者(Content provider)

    使用ContentProvider共享数据 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访 ...

  4. 内容提供器(Content Provider)

    一个跟数据库很相似的用于与其他程序传递信息的组件,用的也是数据库的CRUD操作 相关权限 注册内容提供者以及权限 <provider android:name=".ContentRes ...

  5. Android 内容提供器(Content Provider)介绍

    内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性.目前,使用内容 ...

  6. 【Android Developers Training】 94. 创建一个空内容提供器(Content Provider)

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  7. android学习十二(android的Content Provider(内容提供器)的使用)

    文件存储和SharePreference存储以及数据存储一般为了安全,最好用于当前应用程序中訪问和存储数据.内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能 ...

  8. Android学习之基础知识十—内容提供器(Content Provider)

    一.跨程序共享数据——内容提供器简介 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能 ...

  9. android笔记 : Content provider内容提供器

    内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能. 内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序中的数据,另一种是创建自己的内 ...

随机推荐

  1. ASP.NET MVC中通过Request.IsAjaxRequest()来判断是否要加载公共视图

    个人目测 Request.IsAjaxRequest()这个东西是判断前台提交过来的header中的 X-Requested-With:XMLHttpRequest来区分是不是ajax请求的. ASP ...

  2. 微信发明人竟是他!也是WeChat/Line/WhatsApp的发明者

    赵建文,很多人不知道他是谁:说到微信大家都耳熟能详吧?没错,他就是初始微信发明人,同时也是WeChat/Line/WhatsApp的发明者!正是他的专利<一种基于或囊括手机电话本的即时通讯方法和 ...

  3. DiscuzX程序升级教程_不知道关闭论坛的看过来

    DiscuzX程序升级教程,不知道关闭论坛的朋友看过来,适用于  1.0, 1.5 2.0 , 2.5Beta, 2.5RC,2.5, 3.0 1)关闭论坛:后台- 全局- 站点信息- 是否关闭 :是 ...

  4. 给定一个值S,在有序数组中找出两个元素A和B,使 A+B = S.

    在网上看到过一个面试题,感觉挺有意思,看别人的代码写的逻辑不够谨慎,重写了一个,较真了又... package com.array7.algorithm; public class Algorithm ...

  5. Android学习笔记之打钩显示输入的密码

    利用EditText作为密码输入框是个不错的选择(只需设置输入类型为textPassword即可),保密且无需担心被盗取.但有时用户也不知道自己输入的是否正确,这时就应该提供一个“显示密码”的复选框, ...

  6. svn安装【转载】

    SVN简介        SVN全名Subversion,即版本控制系统.SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统.作为一个开源的版本控制系统,Subversion管理着随时间 ...

  7. Android Debugging

    Debugging methods for Android Contents [hide]  1 Debuggers 1.1 Kernel and User co-debug with GDB on ...

  8. 【分布式存储】GlusterFS failing to mount at boot with Ubuntu 14.04

    GlusterFS failing to mount at boot with Ubuntu 14.04   Previously I asked about mounting GlusterFS a ...

  9. 《ASP.NET MVC4 WEB编程》学习笔记------UrlHelper

    HtmlHelper帮助我们生成Html标记代码:UrlHelper帮助我们生成URL链接地址 我们学习一下UrlHelper帮助类,看类名也都知道这个类是用来帮我们生成URL在ASP.NET MVC ...

  10. object-c 继承多态 动态数据类型

    在c#中我们知道有继承的.同样在object-c中也有继承. 例如我们写一个人类(父),一个学生类.我们可以这么写: demo: @interface Person:NSobject{ NSStrin ...