通过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<String, Object> map = new HashMap<String, Object>();
List<String> con = new ArrayList<String>();
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<String,Object> item = new HashMap<String,Object>();
for(int i= 0;i<con.size();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、代码布局:
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/ph"/>
<Button
android:id="@+id/sms"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sms"/>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</ScrollView>
</LinearLayout>
3、需要用到的权限
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# ContentResolver
# 电话号码
# 短信
# Android中ContentProvider和ContentResolver详解
# android利用ContentResolver访问者获取手机联系人信息
# android利用ContentResolver访问者获取手机短信信息
# Android使用ContentResolver搜索手机通讯录的方法
# android之ContentResolver与ContentProvider介绍
# Android ContentResolver使用说明
# 多个
# 具体内容
# 大家多多
# 送人
# initUI
# TODO
# activity_main
# method
# layout
# Auto
# findViewById
# id
# stub
# generated
# setOnClickListener
# msg
# Override
# con
# gt
# map
相关文章:
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何快速搭建高效香港服务器网站?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
如何快速查询网站的真实建站时间?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
免费视频制作网站,更新又快又好的免费电影网站?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
如何选择CMS系统实现快速建站与SEO优化?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
html制作网站的步骤有哪些,iapp如何添加网页?
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何用已有域名快速搭建网站?
如何选择域名并搭建高效网站?
建站之星如何实现PC+手机+微信网站五合一建站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
香港服务器租用每月最低只需15元?
简单实现Android文件上传
建站之星CMS五站合一模板配置与SEO优化指南
代购小票制作网站有哪些,购物小票的简要说明?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
如何在阿里云高效完成企业建站全流程?
如何快速生成凡客建站的专业级图册?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
如何在宝塔面板创建新站点?
如何在IIS中配置站点IP、端口及主机头?
如何在万网自助建站中设置域名及备案?
非常酷的网站设计制作软件,酷培ai教育官方网站?
成都网站制作报价公司,成都工业用气开户费用?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
如何通过VPS建站实现广告与增值服务盈利?
微信小程序 input输入框控件详解及实例(多种示例)
定制建站流程步骤详解:一站式方案设计与开发指南
如何在万网自助建站平台快速创建网站?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
定制建站方案优化指南:企业官网开发与建站费用解析
盘锦网站制作公司,盘锦大洼有多少5G网站?
如何选择美橙互联多站合一建站方案?
开心动漫网站制作软件下载,十分开心动画为何停播?
如何高效完成自助建站业务培训?
定制建站价位费用解析与套餐推荐全攻略
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何基于PHP生成高效IDC网络公司建站源码?
如何将凡科建站内容保存为本地文件?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
*请认真填写需求信息,我们会在24小时内与您取得联系。