Android中監(jiān)聽短信的兩種方法
更新時間:2015年04月24日 12:03:23 投稿:junjie
這篇文章主要介紹了Android中監(jiān)聽短信的兩種方法,本文講解了監(jiān)聽廣播、采用觀察方法,監(jiān)聽短信數(shù)據(jù)庫兩種方法,需要的朋友可以參考下
1、監(jiān)聽廣播
缺點,因為優(yōu)先級的原因可能接收不到。
代碼:
public static final String TAG = "ImiChatSMSReceiver"; public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"; public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED_ACTION)) { SmsMessage[] messages = getMessagesFromIntent(intent); for (SmsMessage message : messages) { String text = message.getOriginatingAddress() + " : " + message.getDisplayOriginatingAddress() + " : " + message.getDisplayMessageBody() + " : " + message.getTimestampMillis(); String num = message.getOriginatingAddress(); Log.i(TAG, "-------------" + text); Toast.makeText(context, text, Toast.LENGTH_LONG).show(); sendMessage(num, "來自" + num + "的短信已經(jīng)收到", context); context.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, new SmsObserver(new Handler(), context)); } } } public void sendMessage(String num, String text, Context context) { SmsManager smsManager = SmsManager.getDefault(); PendingIntent sentIntent = PendingIntent.getBroadcast(context, 0, new Intent(), 0); String strContent = text; smsManager.sendTextMessage(num, null, strContent, sentIntent, null); TelephonyManager tl = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); int itype = tl.getPhoneType(); Log.i(TAG, "-------------" + "當(dāng)前卡類型為:" + itype); if (itype == TelephonyManager.PHONE_TYPE_GSM) { Toast.makeText(context, "當(dāng)前卡類型為:GSM", Toast.LENGTH_LONG).show(); } else if (itype == TelephonyManager.PHONE_TYPE_CDMA) { Toast.makeText(context, "當(dāng)前卡類型為 : CDMA", Toast.LENGTH_LONG).show(); } else if (itype == TelephonyManager.PHONE_TYPE_NONE) { Toast.makeText(context, "當(dāng)前卡類型為:NONE", Toast.LENGTH_LONG).show(); } } public final SmsMessage[] getMessagesFromIntent(Intent intent) { Object[] messages = (Object[]) intent.getSerializableExtra("pdus"); byte[][] pduObjs = new byte[messages.length][]; for (int i = 0; i < messages.length; i++) { pduObjs[i] = (byte[]) messages[i]; } byte[][] pdus = new byte[pduObjs.length][]; int pduCount = pdus.length; SmsMessage[] msgs = new SmsMessage[pduCount]; for (int i = 0; i < pduCount; i++) { pdus[i] = pduObjs[i]; msgs[i] = SmsMessage.createFromPdu(pdus[i]); } return msgs; }
2、采用觀察方法,監(jiān)聽短信數(shù)據(jù)庫
public class SmsObserver extends ContentObserver { private Context mContext; public SmsObserver(Handler handler , Context context) { super(handler); mContext = context; } public void onChange(boolean selfChange) { super.onChange(selfChange); Cursor cursor =null; try { //讀取收件箱中的短信 cursor = mContext.getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, "date desc"); String body; boolean hasDone =false; if (cursor !=null) { while (cursor.moveToNext()) { body = cursor.getString(cursor.getColumnIndex("body")); if(body !=null)//&& body.equals("【startMyActivity】" { hasDone =true; break; } if (hasDone) { break; } } } } catch(Exception e) { e.printStackTrace(); } finally { if(cursor!=null) cursor.close(); } } }
用到的權(quán)限:
<uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" />
相關(guān)文章
Android使用Intent發(fā)送短信的實現(xiàn)方法
這篇文章主要介紹了Android使用Intent發(fā)送短信的實現(xiàn)方法,結(jié)合簡單實例形式分析了Android短信發(fā)送功能的實現(xiàn)技巧,需要的朋友可以參考下2016-07-07Android SwipereFreshLayout下拉刷新
這篇文章主要介紹了Android SwipereFreshLayout下拉刷新的相關(guān)資料,需要的朋友可以參考下2017-06-06Android滑動刪除數(shù)據(jù)功能的實現(xiàn)代碼
這篇文章主要介紹了Android滑動刪除功能2017-01-01Android實現(xiàn)點擊圖片上傳SQLite數(shù)據(jù)庫
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)點擊圖片上傳SQLite數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08解決在eclipse中將android項目生成apk并且給apk簽名的實現(xiàn)方法詳解
本篇文章是對在eclipse中將android項目生成apk并且給apk簽名的實現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05Android RecyclerView多類型布局卡片解決方案
這篇文章主要介紹了Android RecyclerView多類型布局卡片解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03