1

送信されたメッセージのオブザーバーを使用して、次のサービスを定義しました。問題は、メッセージを送信するときに 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);


    }

}

}

4

1 に答える 1

0

送受信SMSを登録するには、代わりにContentObserverContentObserverを登録し、着信または発信SMSを取得するためのロジックを次のメソッド内に配置する必要があります。"content://sms""content://sms/sent"onChangeContentObserver

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読み取り許可が追加されていることを確認できます。

<uses-permission android:name="android.permission.READ_SMS"/>
于 2012-12-14T05:03:24.027 に答える