文档章节

读取手机短信

xaozu
 xaozu
发布于 2014/04/03 17:21
字数 301
阅读 371
收藏 7
public class GetMessageInfo {
	List<MessageInfo> list;
	Context context;
	MessageInfo messageInfo;

	public GetMessageInfo(Context context) {
		list = new ArrayList<MessageInfo>();
		this.context = context;

	}

	// --------------------------------收到的短息信息----------------------------------
	public List<MessageInfo> getSmsInfos() {

		final String SMS_URI_INBOX = "content://sms/inbox";// 收信箱
		try {
			ContentResolver cr = context.getContentResolver();
			String[] projection = new String[] { "_id", "address", "person","body", "date", "type" };
			Uri uri = Uri.parse(SMS_URI_INBOX);
			Cursor cursor = cr.query(uri, projection, null, null, "date desc");
			while (cursor.moveToNext()) {
				messageInfo = new MessageInfo();
				// -----------------------信息----------------
				int nameColumn = cursor.getColumnIndex("person");// 联系人姓名列表序号
				int phoneNumberColumn = cursor.getColumnIndex("address");// 手机号
				int smsbodyColumn = cursor.getColumnIndex("body");// 短信内容
				int dateColumn = cursor.getColumnIndex("date");// 日期
				int typeColumn = cursor.getColumnIndex("type");// 收发类型 1表示接受 2表示发送
				String nameId = cursor.getString(nameColumn);
				String phoneNumber = cursor.getString(phoneNumberColumn);
				String smsbody = cursor.getString(smsbodyColumn);
				Date d = new Date(Long.parseLong(cursor.getString(dateColumn)));
				SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd " + "\n" + "hh:mm:ss");
				String date = dateFormat.format(d);

				// --------------------------匹配联系人名字--------------------------

				Uri personUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,phoneNumber);
				Cursor localCursor = cr.query(personUri, new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup.PHOTO_ID,PhoneLookup._ID }, null, null, null);
				
				System.out.println(localCursor.getCount());
				System.out.println("之前----"+localCursor);
				if (localCursor.getCount()!=0) {
					localCursor.moveToFirst();
					System.out.println("之后----"+localCursor);
					String name = localCursor.getString(localCursor.getColumnIndex(PhoneLookup.DISPLAY_NAME));
					long photoid = localCursor.getLong(localCursor.getColumnIndex(PhoneLookup.PHOTO_ID));
					long contactid = localCursor.getLong(localCursor.getColumnIndex(PhoneLookup._ID));
					messageInfo.setName(name);
					// 如果photoid 大于0 表示联系人有头像 ,如果没有给此人设置头像则给他一个默认的
					if (photoid > 0) {
                     Uri uri1 = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid);
						InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri1);
						messageInfo.setContactPhoto(BitmapFactory.decodeStream(input));
					} else {
						messageInfo.setContactPhoto(BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher));
					}
                }else{
                		messageInfo.setName(phoneNumber);
						messageInfo.setContactPhoto(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher));
                	}
                	
				localCursor.close();
				
                messageInfo.setSmsContent(smsbody);
				messageInfo.setSmsDate(date);
				list.add(messageInfo);
			}

		} catch (SQLiteException e) {
			e.printStackTrace();
		}
		return list;
	}

}


本文转载自:http://blog.csdn.net/liuyiming_/article/details/7545664

上一篇: 用户ui界面设计
下一篇: XMPP Smack Openfire
xaozu
粉丝 5
博文 25
码字总数 12419
作品 0
宝山
程序员
私信 提问
Android开发之监听或获取手机短信内容

最近做的项目里要监听手机的短消息内容,这个东西好像在最初学的时候都做过,不过现在早忘记了,现在写下来,记住了。 前提--权限:

yolinfeng
2015/06/06
68
1
Webkey for Android

使用webkey你能通过浏览器操作你的手机(需要root权限) 1.截屏 2.打电话 3.查看手机sd卡中文件,并对其进行重命名,删除等操作 4.从手机下载文件和上传文件到手机 5.使用gps进行定位 6.读取手机...

匿名
2012/09/18
6.3K
0
C#如果读取安卓手机的短信(可连接USB到PC)

目前和同学做一个小Demo 还差最后一步,水平有限,求大牛们 给出些简单的提示. 如何接收 手机中的短信, 网上的例子找遍了 有没找到实用的代码。 具体问题是::(如何通过C#代码 拿到 手机上...

翼龙
2014/06/02
3.4K
2
安卓版 whatsapp messenger 无法通过短信验证的解决办法

今年四月份开始注册使用安卓版 whatsapp ,当时觉得好玩就没有使用中国联通的手机号码来完成短信验证,而是使用了 heywire 提供的虚拟手机号码完成的验证,后者的号码格式为 +1 712-345-678...

苗哥
2013/08/10
14.3K
2
短信发送状态报告(Status Report)的处理

术语: MS:Mobile Station SC:Service Centre (used for SMS) SMS:Short Message Service SMSC:Short Message Service - Service Centre SR:Status Report Message storage SMS作为一种信息......

金笛子
2015/11/17
41
0

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
9分钟前
0
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
40分钟前
10
0
aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

2019年9月30日,aelf Enterprise 0.8.0 beta版正式发布。aelf Enterprise 0.8.0 beta是一个完备的区块链系统, 包含完备的区块链系统、开发套件、开发文档、以及配套的基础应用和基础服务。 ...

AELF开发者社区
41分钟前
8
0
oracle 初始化数据库脚本

create user lpf identified by 123456; create tablespace lpf_ts_cms datafile '/opt/app/oracle/product/11.2.0/lpf.dbf' size 200M; alter user lpf default tablespace lpf_ts_cms; sel......

internetafei
46分钟前
7
0
深入了解Redis底层数据结构

说明 说到Redis的数据结构,我们大概会很快想到Redis的5种常见数据结构:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他们的特点和运用场景。不过它们是...

TurboSanil
46分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部