私は、次のコードを持っている:私は、ユーザーが/は、MMSメッセージを送受信する際に観察しようとしているAndroidのMMSオブザーバー
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();
}
}
}
。しかし、私の観察者は決して呼ばれません。私はこれに欠けているものがありますか?私は、下記の読んだ:ここ
Android MMS Broadcast receiver
EDIT
は私がオブザーバーを実行している方法です:
mmsContent = new MmsObserver(new Handler());
getContentResolver().registerContentObserver(Constants.Mms, true, mmsContent);
あなたはObserverをどのように正確に登録していますか?あなたの 'サービス'(おそらく)は、変更が発生したときに実行されていると確信していますか? –
私の質問が更新されました。はい、サービスが実行されていると私は常に実行している(と働いている)SMSオブザーバーがあります。 – KVISH
ああ、申し訳ありませんが、あなたが使っている特定の「ウリ」を主に求めていました。少なくとも古いバージョンでは、 'content:// mms-sms /'にする必要があります。なぜかソースを掘り下げたわけではありませんが、何らかの理由で 'ContentObserver'に対して' content:// mms/'は動作しません。それがSMSのためにも発火することに注意してください。 –