2012-12-14 102 views
1

我已經用發送消息的觀察者定義了以下服務。問題是,發送消息時,onChange()方法沒有被調用,任何人都請告訴我爲什麼?發送短信時沒有調用ContentObserver的Onchange方法

感謝

public class countService extends Service { 

    ContentResolver contentResolver; 

    MyContentObserver Observer; 

    Uri sms_content = Uri.parse("content://sms/sent"); 

    public Cursor cursor; 

    @Override 
    public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void onCreate() { 
    // TODO Auto-generated method stub 
    contentResolver = getBaseContext().getContentResolver(); 
    Observer = new MyContentObserver(); 
    contentResolver.registerContentObserver(sms_content, true, Observer); 
    super.onCreate(); 

} 

private class MyContentObserver extends ContentObserver { 

    public MyContentObserver() { 
     super(null); 
    } 

    @Override 
    public void onChange(boolean selfChange) { 
     super.onChange(selfChange); 
     Log.d("BOOOOOOOOOOOOOOOOOO", "c"); 
     Cursor cursor = contentResolver.query(sms_content, null, null, 
       null, null); 
     cursor.moveToFirst(); 
     String type = cursor.getString(cursor.getColumnIndex("type")); 
     Log.d("THEMESSAGE", type); 


    } 

} 

}

回答

0

用於發送註冊ContentObserver /接收短信,您需要註冊ContentObserver爲"content://sms"代替"content://sms/sent",把你的邏輯越來越傳入或傳出短信裏面的onChange方法ContentObserver

更改您的服務onCreate()爲:

@Override 
public void onCreate() { 
// TODO Auto-generated method stub 
contentResolver = getBaseContext().getContentResolver(); 
Observer = new MyContentObserver(); 
contentResolver.registerContentObserver(
        Uri.parse("content://sms"),true, Observer); 
super.onCreate(); 

} 

和MyContentObserver ContentObserver你可以檢查發送/接收短信,並確保您有加短信的讀取權限在Manifast:

<uses-permission android:name="android.permission.READ_SMS"/> 
+0

它的工作!但是在嘗試實現OnChange方法時遇到問題,發送短信時,是否還有其他方法?謝謝:) – arnold

+0

爲什麼你無法觀察內容:// sms/sent? – gonzobrains

相關問題