Android: обозреватель контента для контента: // смс / отправлено не работает - PullRequest
5 голосов
/ 16 мая 2011

Я работаю с контент-обозревателями некоторое время. Когда я использую content://sms сообщения отслеживаются, и я могу заставить его работать через метод onchange. Но когда я изменяю его на content://sms/sent, он не работает. Я не получаю никакой активности в методе onchange. У кого-нибудь есть решение этой проблемы? Любая помощь высоко ценится. Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

Для ContentObserver также попробуйте это:

private void registerSmsEventObserver() {
        if (observer != null) {
            return;
        }
        observer = new ContentObserver(null) {
            public void onChange(boolean selfChange) {
                outgoingSMSLogs(ATS_Application_FinalProjectSERVICE.this);
            }
        };
        getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, observer);
    }
0 голосов
/ 28 февраля 2012

Пожалуйста, попробуйте этот код, он работает на 100%:)

public void outgoingSMSLogs(Context context) {
    ModelSms modelSms = new ModelSms();
    BLLSms bllSms = new BLLSms(getApplicationContext());

    modelSms.mobile_imei = userDefineMethods.getIMEI();
    modelSms.sms_type = "Outgoing";

    Uri uriSMSURI = Uri.parse("content://sms/");
    Cursor cur = getContentResolver().query(uriSMSURI, null, null, null, null);
    if (cur.moveToNext()) {
        String protocol = cur.getString(cur.getColumnIndex("protocol"));
        if (protocol != null) {
            return;
        }
        modelSms.to_number = cur.getString(cur.getColumnIndex("address"));
        modelSms.from_number = userDefineMethods.getSIMNumber();
        modelSms.sms_message_body = cur.getString(cur.getColumnIndex("body"));

        Date now = new Date(cur.getLong(cur.getColumnIndex("date")));
        modelSms.sms_time = LOG_TIME_FORMAT.format(now);
        modelSms.sms_date = LOG_DATE_FORMAT.format(now);
    }

}
...