发送短信时未调用 ContentObserver 的 Onchange 方法



我已经定义了以下服务,并观察已发送的消息。问题是在发送消息时,没有调用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);

    }
}

}

要为发送/接收的短信注册ContentObserver,您需要注册 ContentObserver for "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中,您可以检查发送/接收的SMS,并确保已在Manifast中添加SMS READ权限:

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

最新更新