设为首页 加入收藏

TOP

Android 读短信(一)
2014-11-24 03:27:16 来源: 作者: 【 】 浏览:2
Tags:Android 短信

发现网上大部分是接收短信的代码,是一个SmsListener。感觉很像phonegap的源码。


下面是读短信的代码


package asset.www;


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("java script:navigator.SmsManager.droidAddContact('" + name + "','" + phoneNumber + "','" + sms +"')");
else
mView.loadUrl("java script:navigator.sms.droidFoundContact('" + name + "','" + phoneNumber + "','" + sms +"')");*/


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


return str;
}//processResults
}


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



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


Java代码
public final static String SMS_URI_ALL = "content://sms/"; //0
public final static String SMS_URI_INBOX = "content://sms/inbox";//1
public final static String SMS_URI_SEND = "content://sms/sent";//2
public final static String SMS_URI_DRAFT = "content://sms/draft";//3
public final static String SMS_URI_OUTBOX = "content://sms/outbox";//4
public final static String SMS_URI_FAILED = "content://sms/failed";//5
public final static String SMS_URI_QUEUED = "content://sms/queued";//6
sms主要结构:


_id => 短消息序号 如100
thread_id => 对话的序号 如100
address => 发件人地址,手机号.如+8613811810000
person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为null
date => 日期 long型。如1256539465022
protocol => 协议 0

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux下KDE的Qt HELLO WORLD 下一篇Android自带示例apidemo都演示了..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)