我正在開發一個收到信息後發送一條短信進行回覆的程序(自動回覆),當我的手機啓動羣聊程序,我的程序並沒有成功的發送消息,於是我採用瞭如下的代碼解決這個問題。
<intent-filter android:priority="500">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
在信息發送後,我專門記錄了SMS日誌,但是現在 短信接收優先級高於羣聊,發送的消息被寫入到用戶的短信記錄收到的消息後,他應該展示如下日誌:
Response Message
Received Message - this is what triggered the response
但是現在他展示的日誌不對,如下
Received Message - triggers response
Response Message
我感覺我的程序被羣聊的程序影響了,擾亂了我的程序,現在不知道該如何處理.
下面是我代碼:
- context.getContentResolver().registerContentObserver(
- Uri.parse("content://sms"),
- true,
- smsObserver);
- And this class:
- private class SMSObserver extends ContentObserver
- {
- public SMSObserver()
- {
- super(null);
- }
- @Override
- public boolean deliverSelfNotifications() {
- return true;
- }
- @Override
- public void onChange(boolean selfChange) {
- super.onChange(selfChange);
- if(!selfChange)
- //sendResponse
- context.getContentResolver().unregisterContentObserver(this);
- }
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- super.onChange(selfChange, uri);
- if(!selfChange)
- //sendResponse
- context.getContentResolver().unregisterContentObserver(this);
- }
- }
處理方法
嘗試使用 ContentObserver 監聽羣聊程序發送短信時的內容,或者測試其他手機,看看是否出現相同的問題
可以採用如下代碼測試
1
2
3
4
5
6
7
8
|
context.getContentResolver().registerContentObserver(Uri.parse( "content://sms" ), true , myContentObserver);
或者 cursor = context.getContentResolver().query(Uri.parse( "content://sms/inbox" ),
new String[] { SMS_ID, SMS_ADDRESS, SMS_READ },
"read = 0" ,
null ,
null );
cursor.registerContentObserver(myContentObserver); |
但我不能使用非光標版本,短信/收件箱中的某些原因。的基於遊標的版本的缺點是,它似乎需要保持開放的話,那麼你必須確保在以後將其關閉。
此外,無論是版本被稱爲讀狀態發生變化時。
原文地址:http://www.itmmd.com/201411/141.html
該文章由 萌萌的IT人 整理髮布,轉載須標明出處。