赵雅智_android系统联系人app分析并获取数据

手机联系人存放位置

和短信一样在data-data下

手机联系人数据库解析

将contacts2.db表导出,通过SQLiteexpert查看

mimetypes表:存放的数据类型(电话,头像,姓名,邮箱)

外键:

raw_contacts表:存放联系人的id

contact_id:联系人id

display_name:联系人姓名

data表:存放联系人的数据

data1:联系人数据

data2:在mimetypes表中data1表示值得意义

mimetype_id:联系人ID,data数据所属的联系人

外键:

raw_contact_id:和raw_contacts表关联

mimetype_id:和mimetypes表关联

contact表

外键

获取联系人的信息:

  1. 查询raw_contact表,把联系人的id获取出来
  2. 根据联系人的id查询data表,把这个联系人的相应数据获取出来
  3. 查询mimetypes表,获取数据类型

插入一个联系人信息

  1. 首先插入raw_contact表写入一个新的联系人id
  2. 根据新创建的id 写入到data表 data1 mimetype

手机联系人源码解析

在android系统的联系人代码中,AndroidMenifest.xml定义了提供外接查询的接口

在android系统联系人中,定义了联系人有关的urimatcher

在android api中的ContactsContractData为我们提供了响应方法及简单用例:

添加方法

查询方法

删除更新方法

步骤

得到内容解析器

查询数据

显示数据

主要代码

package com.example.android_readphone.provider;

import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.test.AndroidTestCase;

/**
 * 测试获取联系人
 *
 * @author zhaoyazhi
 *
 */
public class PhoneProviderTest extends AndroidTestCase {

	public void readContacts() {
		ContentResolver contentResolver = getContext().getContentResolver();
		Cursor c = contentResolver.query(
				ContactsContract.RawContacts.CONTENT_URI, new String[] { "_id",
						"display_name"  }, null, null, null);
		while (c.moveToNext()) {
			String id = c.getString(c
					.getColumnIndex(ContactsContract.RawContacts._ID));
			String name = c.getString(c.getColumnIndex("display_name"));
			System.out.println("序号id:" + id + "----------name:" + name
					 );
		}
		c.close();

	}
}

输出结果:

android联系人系统源码:http://download.csdn.net/detail/zhaoyazhi2129/7491109

赵雅智_android系统联系人app分析并获取数据,布布扣,bubuko.com

时间: 2024-12-17 05:13:45

赵雅智_android系统联系人app分析并获取数据的相关文章

赵雅智_android多线程下载带进度条

progressBar说明 在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度.一个进度条也可不确定其进度.在不确定模式下,进度条显示循环动画.这种模式常用于应用程序使用任务的长度是未知的. XML重要属性 android:progressBarStyle:默认进度条样式 android:progressBarStyleHorizontal:水平样式 progressBar重要方法 getMax():返回这个进度条的范围的

赵雅智_android http get请求

<!-- 添加网络访问权限 --> <uses-permission android:name="android.permission.INTERNET"/> 布局文件 activity_login.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content&q

赵雅智_android使用adb命令详解附图

adb是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备 我们除了用可视化窗口中操作也可以采用cmd命令行进行操作. 在开始菜单的搜索栏中输入cmd打开命令行 在本地找到adb.exe路径(如图1.1),把adb.exe拖到cmd命令行敲击回车显示所有可操作帮助示例(如图1.2). 图1.1 adb.exe路径 图1.2 adb命令示例 如果不输入adb的正确路径就不能进行正常显示,如图1.3: 图1.3adb未能正确打开 为了保证adb在任何路径下都能使用,

赵雅智_Android短信发送器

注意要点: 1)必须要在AndroidManifest.xml中添加发送短信权限<uses-permission android:name="android.permission.SEND_SMS" /> 设置视图:setContentView(R.layout.布局xml文件); 2)查找控件:findViewById(R.id.控件id); 3)监听按钮事件:控件.setOnClickListener(this),实现OnClickListener接口 4)获取edit

赵雅智_android实例_当监听类有数据更新时下拉刷新

之前两篇文章分别介绍了OnScrollListener的实现和ContentProvider监听数据的变化,下面我们就结合者两个知识点实现一个小项目 项目需求 使用当ContentProvider监听类有数据更新时,在当前界面进行提示,并用OnScrollListener实现下拉刷新 实现效果 通过ContentProvider显示数据在界面 当监听类发生变化时 下拉刷新后显示数据 实现步骤 android_sqlite项目 定义操作标识 匹配结果码 继承ContentProvider类重写方法

赵雅智_android样式与主题

样式与主题的区别 样式应用于特殊的组件,主题应用与整个应用或整个Activity 主题不仅单单显示内容的风格(大小.颜色),而且可以设置窗口的显示风格 当主题的设置属性与样式的设置属相相同时,系统按样式的设置属性显示 系统定义的一些常有主题: <activity android:theme="@android:style/Theme.Dialog"></activity>对话框风格 <activity android:theme="@androi

赵雅智_Android Paint

要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上.Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设置,主要方法如下: setAntiAlias: 设置画笔的锯齿效果. setColor: 设置画笔颜色 setARGB:  设置画笔的a,r,p,g值. setAlpha:  设置Alpha值 setTextSize: 设置字体尺寸. setStyle:  设置画笔风格,空心或者实心. setStrokeWidth: 设置

赵雅智_Android案例_刮刮乐

实现效果 主要代码 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <I

赵雅智_android测试

测试概念 从是否关心软件内部结构和具体实现的角度划分 黑盒测试:只关心程序执行的过程和结果 白盒测试:根据源代码写测试方法或者测试用例 灰盒测试:是介于白盒测试与黑盒测试之间的 从软件开发的过程按阶段划分有 A.单元测试 B.集成测试 C.确认测试 D.系统测试 E.验收测试 F.回归测试 G.Alpha测试 新建测试项目测试 新建测试项目 新建测试类 在本类创建测试类 新建测试类继承AndroidTestCase类 配置测试设备和类库 配置测试设备 配置类库 AndroidManifest.x