展会信息港展会大全

Android短信查询(sms)
来源:互联网   发布日期:2016-01-14 12:33:25   浏览:2515次  

导读:sms主要结构:id = 短消息序号 如100thread_id = 对话的序号 如100address = 发件人地址,手机号.如+8613811810000person = 发件人,返回一个数字就是联系人列表里的序号,陌生人为nulldate = ......

sms主要结构:

id => 短消息序号 如100

thread_id => 对话的序号 如100

address => 发件人地址,手机号.如+8613811810000

person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为null

date => 日期 long型。如1256539465022

protocol => 协议 0 SMS_RPOTO, 1 MMS_PROTO

read => 是否阅读 0未读, 1已读

status => 状态 -1接收,0 complete, 64 pending, 128 failed

type => 类型 1是接收到的,2是已发出

body => 短消息内容

service_center => 短信服务中心号码编号。如+8613800755500

查询短信是通过contentprovider实现的,例如:

查询收件箱:managedQuery(Uri.parse("content://sms/inbox");

查询发件箱:managedQuery(Uri.parse("content://sms/send");

public final static String SMS_URI_ALL = "content://sms/";

public final static String SMS_URI_INBOX = "content://sms/inbox";

public final static String SMS_URI_SEND = "content://sms/sent";

public final static String SMS_URI_DRAFT = "content://sms/draft";

public final static String SMS_URI_OUTBOX = "content://sms/outbox";

public final static String SMS_URI_FAILED = "content://sms/failed";

public final static String SMS_URI_QUEUED = "content://sms/queued";

例子:

package com.android.study;

import android.app.Activity;

import android.database.Cursor;

import android.database.sqlite.SQLiteException;

import android.net.Uri;

import android.os.Bundle;

import android.util.Log;

import android.widget.TextView;

public class ReadSMSActivity extends Activity {

/** Called when the activity is first created. */

private static final String LOG_TAG = "Sms Query";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

super.onCreate(savedInstanceState);

TextView tv = (TextView) findViewById(R.id.text);

tv.setText("");

tv.setText(getSmsAndSendBack());

}

/**

* 读取短信

*

* @return

*/

public String getSmsAndSendBack() {

String[] projection = new String[] { "_id", "address", "person",

"body", "type" };

StringBuilder str = new StringBuilder();

try {

Cursor myCursor = managedQuery(Uri.parse("content://sms"),

projection, null, null, "date desc");

str.append(processResults(myCursor));

} catch (SQLiteException ex) {

Log.d(LOG_TAG, ex.getMessage());

}

return str.toString();

}

/**

* 处理短信结果

*

*/

private StringBuilder processResults(Cursor cur) {

// TODO Auto-generated method stub

StringBuilder sb = new StringBuilder();

if (cur.moveToFirst()) {

String name;

String phoneNumber;

String sms;

int type;

int nameColumn = cur.getColumnIndex("person");

int phoneColumn = cur.getColumnIndex("address");

int smsColumn = cur.getColumnIndex("body");

int typeColum = cur.getColumnIndex("type");

do {

// Get the field values

name = cur.getString(nameColumn);

phoneNumber = cur.getString(phoneColumn);

sms = cur.getString(smsColumn);

type = cur.getInt(typeColum);

System.out.println("..................................");

System.out.println("name" + name);

System.out.println("type" + type);

System.out.println("phoneNumber" + phoneNumber);

System.out.println("sms" + sms);

System.out.println("..................................");

sb.append("{");

sb.append(name + ",");

sb.append(phoneNumber + ",");

sb.append(sms);

sb.append("}");

if (null == sms)

sms = "";

} while (cur.moveToNext());

} else {

sb.append("no result!");

}

return sb;

}

}

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

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

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港