Android中簡訊監聽的各種問題,實現監聽簡訊的功能

來源:互聯網
上載者:User

寫一個簡訊監聽程式,大家很容易想到的就是註冊一個廣播接收器,來接收系統收到簡訊時候的廣播。可是這個廣播是有序廣播,就是當別的程式先擷取到了這個廣播再傳遞給你,當然它也可以幹掉這個廣播,讓你接收不到,這樣你的程式肯定是接收不到這個廣播的了。網上有很多這樣的例子,什麼提高廣播接收器的優先順序又是1000又是10000的。。

大家可以看看這個廣播的基本介紹:http://wenku.baidu.com/view/226f9dd5b14e852458fb57ba.html

這裡提到了把intent-filter中的android:priority的值設定為1000,但是在即時中你設定1000一樣是接受不到廣播的,除非你把手機中的其他接受了這個廣播的簡訊卸載,比如360 GO簡訊,飛信神馬的。他們的優先順序總是要比你的高。你可以繼續BAIDU,有的人會設定它為10000 9999等等,你會發現設定為10000的時候偶爾可以接收到,僅僅是偶爾。那腫麼辦呢。

我下面用的方法不是去接收系統廣播,而是去監聽簡訊資料庫的變化,當收到簡訊資料庫變化了的時候,去取得最新的那條簡訊即可。或者你想別的什麼操作也可以。

監聽類SmsReceiver.java

package com.pei.broadcastReceiver;import java.util.List;import com.pei.fixed.AllFinalInfo;import com.pei.info.SmsInfo;import com.pei.util.SmsContent;import android.app.Activity;import android.database.ContentObserver;import android.net.Uri;import android.os.Handler;/** * class name:SmsReceiver<BR> * class description:資料庫改變監聽類<BR> * PS:當資料改變的時候,執行裡面才change方法<BR> * Date:2012-3-16<BR> *  * @version 1.00 * @author CODYY)peijiangping */public class SmsReceiver extends ContentObserver {/** * Activity對象 */private Activity activity;private List<SmsInfo> infos;public SmsReceiver(Handler handler, Activity activity) {super(handler);this.activity = activity;}@Overridepublic void onChange(boolean selfChange) {Uri uri = Uri.parse(AllFinalInfo.SMS_URI_INBOX);// 設定一個uri來查看各種類別簡訊內容SmsContent smscontent = new SmsContent(activity, uri);infos = smscontent.getSmsInfo();System.out.println(infos.get(1).getSmsbody());super.onChange(selfChange);}}

怎麼註冊這個監聽呢,只需:

ContentObserver co = new SmsReceiver(new Handler(),AndroidUtilActivity.this);this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, co);

SmsContent.java內容請參考上篇部落格。AllFinalInfo.SMS_URI_INBOX也請參考上篇部落格。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.