通过ContentResolver 获取到手机的联系人跟手机短信信息并显示出来。

1、实现的代码:

package com.example.phone;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.net.Uri;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.provider.ContactsContract.PhoneLookup;

import android.app.Activity;

import android.content.ContentResolver;

import android.database.Cursor;

import android.database.sqlite.SQLiteException;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener{

private TextView text;

private Button button;

private Button sms;

HashMap map = new HashMap();

List con = new ArrayList();

String msg;//联系人姓名+号码

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initUI();

}

private void initUI() {

// TODO Auto-generated method stub

text = (TextView)findViewById(R.id.text);

button = (Button)findViewById(R.id.button);//获取手机电话号码

button.setOnClickListener(this);

sms = (Button)findViewById(R.id.sms);//获取手机短信信息

sms.setOnClickListener(this);

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch(v.getId()){

case R.id.button:

getPhoneNumber();//获取手机电话号码

break;

case R.id.sms://获取手机短信内容

getSmsMessage();

Map item = new HashMap();

for(int i= 0;i

text.setText(item.put("con", con.get(i))+"");//仅显示一条

System.out.println("ningshengcai:"+item.put("con", con.get(i)));//打印显示全部数据

}

break;

default :

break;

}

}

/**

* 获取手机联系人号码

*/

public void getPhoneNumber(){

// smslist=getListView();

//得到ContentResolver对象

ContentResolver cr = getContentResolver();

//取得电话本中开始一项的光标

Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

while (cursor.moveToNext())

{

// 取得联系人名字

int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);

String name = cursor.getString(nameFieldColumnIndex);

//name += (name);

// 取得联系人ID

String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,

ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "+ contactId, null, null);

// 取得电话号码(可能存在多个号码)

while (phone.moveToNext())

{

String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

System.out.println(name+":"+strPhoneNumber);

msg += name+":"+strPhoneNumber+"\n";

text.setText(msg);

}

phone.close();

}

cursor.close();

}

/**

* 获取短信信息

* @return smsBuilder.toString()

*/

@SuppressWarnings("unused")

public String getSmsMessage(){

final String SMS_URI_ALL = "content://sms/";

final String SMS_URI_INBOX = "content://sms/inbox";

final String SMS_URI_SEND = "content://sms/sent";

final String SMS_URI_DRAFT = "content://sms/draft";

StringBuilder smsBuilder = new StringBuilder();

try{

ContentResolver cr = getContentResolver();

String[] projection = new String[]{"_id", "address", "person",

"body", "date", "type"};

Uri uri = Uri.parse(SMS_URI_ALL);

Cursor cur = cr.query(uri, projection, null, null, "date desc");

if (cur.moveToFirst()) {

String name;

String phoneNumber;

String smsbody;

String date;

String type;

int nameColumn = cur.getColumnIndex("person"); //发送人

int phoneNumberColumn = cur.getColumnIndex("address"); //号码

int smsbodyColumn = cur.getColumnIndex("body"); //内容

int dateColumn = cur.getColumnIndex("date"); //时间

int typeColumn = cur.getColumnIndex("type"); //接收还是发送

do{

name = cur.getString(nameColumn);

phoneNumber = cur.getString(phoneNumberColumn);

smsbody = cur.getString(smsbodyColumn);

SimpleDateFormat dateFormat = new SimpleDateFormat(

"yyyy-MM-dd hh:mm:ss");

Date d = new Date(Long.parseLong(cur.getString(dateColumn)));

date = dateFormat.format(d);

int typeId = cur.getInt(typeColumn);

if(typeId == 1){

type = "接收";

} else if(typeId == 2){

type = "发送";

} else {

type = "";

}

//System.out.println("nsc :"+name+":"+phoneNumber+":"+smsbody+":"+date+":"+type +"\n");

String smsmsg = name+":"+phoneNumber+":"+smsbody+":"+date+":"+type+"\n";

con.add(smsmsg);

if(smsbody == null) smsbody = "";

}while(cur.moveToNext());

} else {

smsBuilder.append("no result!");

}

smsBuilder.append("getSmsInPhone has executed!");

} catch(SQLiteException ex) {

Log.d("SQLiteException in getSmsInPhone", ex.getMessage());

}

return smsBuilder.toString();

}

}2、代码布局:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".MainActivity" >

android:id="@+id/button"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/ph"/>

android:id="@+id/sms"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/sms"/>

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

3、需要用到的权限

android获取手机短信记录,android 获取手机电话号码和短信内容相关推荐

  1. android删除短信记录,android 4.4 以上删除短信的方法

    android 4.4之后非默认的短信应用已经没有办法删除短信了.像以前那样用如下方法是不会没法删除短信的(即使在xml中配置了短信的读写权限),同时也不会有报错或其他提示. 但通过打印可以看到上述代 ...

  2. android手机操控及屏幕录制,手机操作视频记录 Android版屏幕录制

    俗话说"每一个Android女的背后,都有一个帮她刷ROM的男人",由此可见玩转Android确实是一项技术活,而作为手机玩家,在生活中我们也确实会遇到有人请教各种关于手机操作的问 ...

  3. android 微信分享 源码,记录Android微信分享功能的吐槽与思考

    在App内潜入分享到微信好友或朋友圈的功能想必大家已经屡见不鲜了,比如Android分享一个网页信息(URL)到微信客户端的代码: /** * 微信分享:分享网页 * @param context * ...

  4. 手机上计算机记录怎么删除,手机怎么删除支付宝消费记录 清除支付宝账单明细方法...

    在支付宝这款软件中,用户使用它进行支付后都会有一个消费记录,最近,不少用户好奇,在即可以删除支付宝的消费记录吗,如果可以删除,应该怎么做,今天就给大家整理了消费记录删除教程. 在支付宝这款APP中,用 ...

  5. Android开发 亲测可用--多种方式获取手机短信验证码自动填入

    Android开发 静态注册.动态注册.短信中心库监控获取手机验证码,自动复制到剪切板或或填入输入框. 友情提醒初学者:这是广播接收器的类,写在xml中静态注册或写在启动类的Oncreate方法下动态 ...

  6. android通话记录列表apk,android打电话,发短信,获取通讯录、通话记录、短信记录...

    [实例简介] 代码实现android打电话,发短信,获取通讯录.通话记录.短信记录 [实例截图] [核心代码] 19287b5f-b70c-4210-ab04-9d24ddd60788 └── cal ...

  7. android通讯录管理(获取联系人,通话记录,短信消息),Android通讯录管理(获取联系人、通话记录、短信消息)(二)...

    Android通讯录管理(获取联系人.通话记录.短信消息)(二) 前言:上一篇博客介绍的是获取联系人的实现,本篇博客将介绍通话记录的实现. 界面布局: /Contact_Demo/res/layout ...

  8. Android通讯录管理(获取联系人、通话记录、短信消息)

    前言:前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选.反选和删除等在实际开发中可能需要实现的功能,本篇博客是小巫从一个别人开源的一个项目抽取出来的部分内容,把它给简化出来,可以让需要的朋友清 ...

  9. Android通讯录管理(获取联系人、通话记录、短信消息)(二)

    Android通讯录管理(获取联系人.通话记录.短信消息)(二) 前言:上一篇博客介绍的是获取联系人的实现,本篇博客将介绍通话记录的实现. 同样的,你可以到这里下载源码:http://download ...

最新文章

  1. 从零开始搭建spring-cloud(3) ----feign
  2. Waiting 180 more seconds for 1 worker threads to finish
  3. viewState 与session[转]
  4. 【BZOJ3759】【cogs1603】饥饿游戏,博弈
  5. 《UNIX环境高级编程》笔记--read函数,write函数,lseek函数
  6. 动态规划01背包问题入门学习,详细笔记,推荐阅读
  7. 知其然就够了——大数据时代的思考之一
  8. 中标麒麟/NeoKylin U盘安装系统
  9. 联通路由器设置FTP服务器,做家庭储存云盘
  10. android手机脱网分析,网络营销-13款手机浏览器分析(Android).pptx
  11. “扣哒杯” AI世青赛全国决赛落幕 集体奖和一等奖附加赛名单揭晓
  12. cpython cython_Cython笔记
  13. Kotlin项目实战之手机影音---悦单条目实现及BaseListFragment抽取
  14. 详解Unity中的粒子系统Particle System (八)
  15. Oracle EBS R12 - Application patch可不可以reapply
  16. 微信小程序绑定数据页面不显示并且页面没有报错
  17. mysql 一小时内数据
  18. 百度、IBM和谷歌齐聚旧金山,人工智能未来会有哪些推进?
  19. 考试三级网络技术笔试
  20. u盘插在电脑上灯亮没有反应_Win7系统插入U盘指示灯亮但电脑不显示的解决方法【图】...

热门文章

  1. homebrew/dupes was deprecated. This tap is now empty as all its formulae were migrated
  2. java 多线程重温
  3. android go 小米1,小米首款Android Go入门机红米Redmi Go发布,1GB+8GB运存
  4. c语言埃拉托色尼筛选法数组,埃拉托色尼筛选法 算法
  5. 寸 金 难 买 寸 光 阴
  6. ISO7816 智能卡 接口
  7. 多对多关系需要建立中间表_【数据库基础】为什么需要三张表之多对多表结构设计...
  8. 强势增长的中国半导体封装企业,已站在“起跑线”上
  9. Verilog 中signed和$signed()的用法
  10. 可在WPS环境中通用的vb6代码修改方法