KVISH
KVISH

Reputation: 13208

Android MMS observer

I have the following code:

public class MmsObserver extends ContentObserver {
    private Context context;

    public MmsObserver(Handler handler) {
        super(handler);
        this.context = service.getBaseContext();
    }

    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);

        Long largestDateCounted = Long.parseLong(UserPreferencesManager.getInstance().getValueFromPreferences(context, context.getString(R.string.preferences_current_counter), "0"));
        String filter = "creator != ? and date > ?";
        String[] args = new String[]{context.getPackageName(), Long.toString(largestDateCounted)};
        Cursor c = context.getContentResolver().query(Constants.Mms, null, filter, args, null);

        try {

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            c.close();
        }
    }
}

I'm trying to observe when user sends/receives an MMS message. However, my observer never gets called. Is there something I'm missing on this? I have read the below:

Android MMS Monitoring

Android MMS Broadcast receiver

EDIT

here is how i'm running the observer:

mmsContent = new MmsObserver(new Handler());
getContentResolver().registerContentObserver(Constants.Mms, true, mmsContent);

Upvotes: 2

Views: 886

Answers (1)

Mike M.
Mike M.

Reputation: 39191

When registering a ContentObserver for MMS, the URI needs to be content://mms-sms/, at least on older Android versions. For some reason, content://mms/ won't work for a ContentObserver, other than possibly firing on changes to draft messages.

Do note that this will cause the Observer to fire for changes to the SMS table, as well.

Upvotes: 1

Related Questions