关于Android短信拦截(三)
16lz
2021-12-22
- packagecom.example.xxxx;
- importcom.example.xxxx.R;
- importandroid.app.Activity;
- importandroid.content.ContentValues;
- importandroid.database.ContentObserver;
- importandroid.database.Cursor;
- importandroid.net.Uri;
- importandroid.os.Bundle;
- importandroid.os.Handler;
- publicclassScreenTestextendsActivity{
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- SmsContentcontent=newSmsContent(newHandler());
- //注册短信变化监听
- this.getContentResolver().registerContentObserver(
- Uri.parse("content://sms/"),true,content);
- }
- classSmsContentextendsContentObserver{
- privateCursorcursor=null;
- publicSmsContent(Handlerhandler){
- super(handler);
- }
- @Override
- publicvoidonChange(booleanselfChange){//当短信表发送改变时,调用该方法
- super.onChange(selfChange);
- //读取收件箱中指定号码的短信
- cursor=managedQuery(Uri.parse("content://sms/inbox"),
- newString[]{"_id","address","read"},
- "address=?andread=?",
- newString[]{"12345678901","0"},"datedesc");
- if(cursor!=null){
- ContentValuesvalues=newContentValues();
- values.put("read","1");//修改短信为已读模式
- cursor.moveToFirst();
- while(cursor.isLast()){//更新当前未读短信状态为已读
- getContentResolver().update(Uri.parse("content://sms/inbox"),
- values,"_id=?",newString[]{""+cursor.getInt(0)});
- cursor.moveToNext();
- }
- }//endofif
- }//endofpublicvoid
- }//endofclassSmsContent
- }
拦截短信最简单的就是建个receiver接受<action android:name="android.provider.Telephony.SMS_RECEIVED" />
这个系统广播,之后
- Bundlebundle=intent.getExtras();
- Objectmessages[]=(Object[])bundle.get("pdus");
- SmsMessagesmsMessage[]=newSmsMessage[messages.length];
- for(intn=0;n<messages.length;n++){
- smsMessage[n]=SmsMessage.createFromPdu((byte[])messages[n]);
- }
更多相关文章
- Android(安卓)TV开发中所有的遥控器按键监听
- android 游戏框架SurfaceView
- Android开启/关闭/监听 飞行模式
- 强强学Android_Android事件传递
- android 蓝牙app代码
- android实现发送短信demo
- android socket
- android 监听判断软键盘的弹出、隐藏状态
- Android耳机按键监听