下面是读短信的代码

package asset.www;

import android.app.Activity;
import android.content.ContentValues;
import android.database.ContentObserver;
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.TextView;

public class mini extends Activity {
/** Called when the activity is first created. */
private static final String LOG_TAG = "Sms Query";

//入口是onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);

tv.setText("Hello, Android");

tv.setText(getSmsAndSendBack());

setContentView(tv);
}
/**
* 读取短信
* @return
*/
public String getSmsAndSendBack()
{
String[] projection = new String[] {
"_id",
"address",
"person",
"body"
};
StringBuilder str=new StringBuilder();
try{
Cursor myCursor = managedQuery(Uri.parse("content://sms/inbox"),
projection,
null, null , "date desc");
str.append(processResults(myCursor, true));
str.append("getContactsAndSendBack has executed!");
/* myCursor = managedQuery(Uri.parse("content://sms/inbox"),
new String[] { "_id", "address", "read" },
" address=? and read=?",
new String[] { "12345678901", "0" }, "date desc");*/

}
catch (SQLiteException ex)
{
Log.d(LOG_TAG, ex.getMessage());
}
return str.toString();
}
/**
* 处理短信结果
* @param cur
* @param all 用来判断是读一条还是全部读。后来没有用all,可以无视
*/
private StringBuilder processResults(Cursor cur, boolean all) {
// TODO Auto-generated method stub
StringBuilder str=new StringBuilder();
if (cur.moveToFirst()) {

String name;
String phoneNumber;
String sms;


int nameColumn = cur.getColumnIndex("person");
int phoneColumn = cur.getColumnIndex("address");
int smsColumn = cur.getColumnIndex("body");

do {
// Get the field values
name = cur.getString(nameColumn);
phoneNumber = cur.getString(phoneColumn);
sms = cur.getString(smsColumn);

str.append("{");
str.append(name+",");
str.append(phoneNumber+",");
str.append(sms);
str.append("}");



if (null==sms)
sms="";


/* if (all)
mView.loadUrl("javascript:navigator.SmsManager.droidAddContact('" + name + "','" + phoneNumber + "','" + sms +"')");
else
mView.loadUrl("javascript:navigator.sms.droidFoundContact('" + name + "','" + phoneNumber + "','" + sms +"')");*/

} while (cur.moveToNext());
/* if (all)
mView.loadUrl("javascript:navigator.SmsManager.droidDone()");
else
mView.loadUrl("javascript:navigator.sms.droidDone();");*/
}
else
{
str.append("no result!");
/* if(all)
mView.loadUrl("javascript:navigator.SmsManager.fail()");
else
mView.loadUrl("javascript:navigator.sms.fail('None found!')");*/
}

return str;
}//processResults
}

记得在AndroidManifest.xml中加入android.permission.READ_SMS这个permission

<uses-permission android:name="android.permission.READ_SMS" />

另外附加两个我找到的好文章:

http://www.javaeye.com/topic/568260

http://yidianfengfan.javaeye.com/blog/610744

Java代码
  1. public final static String SMS_URI_ALL ="content://sms/"; //0
  2. public final static String SMS_URI_INBOX = "content://sms/inbox";//1
  3. public final static String SMS_URI_SEND = "content://sms/sent";//2
  4. public final static String SMS_URI_DRAFT = "content://sms/draft";//3
  5. public final static String SMS_URI_OUTBOX = "content://sms/outbox";//4
  6. public final static String SMS_URI_FAILED = "content://sms/failed";//5
  7. public final static String SMS_URI_QUEUED = "content://sms/queued";//6
sms主要结构:
  1. _id => 短消息序号 如100
  2. thread_id => 对话的序号 如100
  3. address => 发件人地址,手机号.如+8613811810000
  4. person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为null
  5. date => 日期long型。如1256539465022
  6. protocol => 协议 0 SMS_RPOTO, 1 MMS_PROTO
  7. read => 是否阅读 0未读, 1已读
  8. status => 状态 -1接收,0 complete, 64 pending, 128 failed
  9. type => 类型 1是接收到的,2是已发出
  10. body => 短消息内容
  11. service_center => 短信服务中心号码编号。如+8613800755500
转自: http://hi.baidu.com/miuchen/blog/item/d5313b34bf35b887a61e1288.html

更多相关文章

  1. android短信窃听器,娱乐版,效果可以实现
  2. android studio 读取短信
  3. android 监听短信和来电
  4. 关于Android短信管理
  5. 关于Android短信管理
  6. Android开发之接收系统广播消息
  7. Android(安卓)利用广播实现黑名单【指定号码】的短信的拦截 附源
  8. 无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、
  9. android短信发送器源代码

随机推荐

  1. MSSQL木马修复,中木马后的处理方法
  2. SQL中Group分组获取Top N方法实现可首选r
  3. having的用法以及与where区别介绍
  4. sql 截取域名的问题
  5. SQL 级联删除与级联更新的方法
  6. sql语句之数据操作介绍
  7. SQLServer导出sql文件/表架构和数据操作
  8. SQLSERVER数据库中的5173错误解决方法
  9. SQL Server高级内容之子查询和表链接概述
  10. MSSQL数据库获取TEXT字段的内容长度