android获取手机短信记录,android 获取手机电话号码和短信内容
通过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 获取手机电话号码和短信内容相关推荐
- android删除短信记录,android 4.4 以上删除短信的方法
android 4.4之后非默认的短信应用已经没有办法删除短信了.像以前那样用如下方法是不会没法删除短信的(即使在xml中配置了短信的读写权限),同时也不会有报错或其他提示. 但通过打印可以看到上述代 ...
- android手机操控及屏幕录制,手机操作视频记录 Android版屏幕录制
俗话说"每一个Android女的背后,都有一个帮她刷ROM的男人",由此可见玩转Android确实是一项技术活,而作为手机玩家,在生活中我们也确实会遇到有人请教各种关于手机操作的问 ...
- android 微信分享 源码,记录Android微信分享功能的吐槽与思考
在App内潜入分享到微信好友或朋友圈的功能想必大家已经屡见不鲜了,比如Android分享一个网页信息(URL)到微信客户端的代码: /** * 微信分享:分享网页 * @param context * ...
- 手机上计算机记录怎么删除,手机怎么删除支付宝消费记录 清除支付宝账单明细方法...
在支付宝这款软件中,用户使用它进行支付后都会有一个消费记录,最近,不少用户好奇,在即可以删除支付宝的消费记录吗,如果可以删除,应该怎么做,今天就给大家整理了消费记录删除教程. 在支付宝这款APP中,用 ...
- Android开发 亲测可用--多种方式获取手机短信验证码自动填入
Android开发 静态注册.动态注册.短信中心库监控获取手机验证码,自动复制到剪切板或或填入输入框. 友情提醒初学者:这是广播接收器的类,写在xml中静态注册或写在启动类的Oncreate方法下动态 ...
- android通话记录列表apk,android打电话,发短信,获取通讯录、通话记录、短信记录...
[实例简介] 代码实现android打电话,发短信,获取通讯录.通话记录.短信记录 [实例截图] [核心代码] 19287b5f-b70c-4210-ab04-9d24ddd60788 └── cal ...
- android通讯录管理(获取联系人,通话记录,短信消息),Android通讯录管理(获取联系人、通话记录、短信消息)(二)...
Android通讯录管理(获取联系人.通话记录.短信消息)(二) 前言:上一篇博客介绍的是获取联系人的实现,本篇博客将介绍通话记录的实现. 界面布局: /Contact_Demo/res/layout ...
- Android通讯录管理(获取联系人、通话记录、短信消息)
前言:前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选.反选和删除等在实际开发中可能需要实现的功能,本篇博客是小巫从一个别人开源的一个项目抽取出来的部分内容,把它给简化出来,可以让需要的朋友清 ...
- Android通讯录管理(获取联系人、通话记录、短信消息)(二)
Android通讯录管理(获取联系人.通话记录.短信消息)(二) 前言:上一篇博客介绍的是获取联系人的实现,本篇博客将介绍通话记录的实现. 同样的,你可以到这里下载源码:http://download ...
最新文章
- 从零开始搭建spring-cloud(3) ----feign
- Waiting 180 more seconds for 1 worker threads to finish
- viewState 与session[转]
- 【BZOJ3759】【cogs1603】饥饿游戏,博弈
- 《UNIX环境高级编程》笔记--read函数,write函数,lseek函数
- 动态规划01背包问题入门学习,详细笔记,推荐阅读
- 知其然就够了——大数据时代的思考之一
- 中标麒麟/NeoKylin U盘安装系统
- 联通路由器设置FTP服务器,做家庭储存云盘
- android手机脱网分析,网络营销-13款手机浏览器分析(Android).pptx
- “扣哒杯” AI世青赛全国决赛落幕 集体奖和一等奖附加赛名单揭晓
- cpython cython_Cython笔记
- Kotlin项目实战之手机影音---悦单条目实现及BaseListFragment抽取
- 详解Unity中的粒子系统Particle System (八)
- Oracle EBS R12 - Application patch可不可以reapply
- 微信小程序绑定数据页面不显示并且页面没有报错
- mysql 一小时内数据
- 百度、IBM和谷歌齐聚旧金山,人工智能未来会有哪些推进?
- 考试三级网络技术笔试
- u盘插在电脑上灯亮没有反应_Win7系统插入U盘指示灯亮但电脑不显示的解决方法【图】...
热门文章
- homebrew/dupes was deprecated. This tap is now empty as all its formulae were migrated
- java 多线程重温
- android go 小米1,小米首款Android Go入门机红米Redmi Go发布,1GB+8GB运存
- c语言埃拉托色尼筛选法数组,埃拉托色尼筛选法 算法
- 寸 金 难 买 寸 光 阴
- ISO7816 智能卡 接口
- 多对多关系需要建立中间表_【数据库基础】为什么需要三张表之多对多表结构设计...
- 强势增长的中国半导体封装企业,已站在“起跑线”上
- Verilog 中signed和$signed()的用法
- 可在WPS环境中通用的vb6代码修改方法