Где зарегистрировать ContentObserver, который должен работать бесконечно?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Где зарегистрировать ContentObserver, который должен работать бесконечно?

Сообщение Anonymous »

Вот как я регистрирую ContentObserver для прослушивания отправленных SMS:

Код: Выделить всё

SendSmsObserver smsObeserver = (new SendSmsObserver(new Handler(), context));
ContentResolver contentResolver = context.getContentResolver();
contentResolver.registerContentObserver(Uri.parse("content://sms"), true, smsObeserver);
Это класс SendSmsObserver:

Код: Выделить всё

class SendSmsObserver extends ContentObserver {

private Context context;

SendSmsObserver(Handler handler, Context context) {
super(handler);
this.context = context;
}

@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
queryLastSentSMS();
}
Теперь вопрос в том, где мне разместить три верхние строки кода? В настоящее время я пишу это в методе OnCreate действия. Но делая это, я вызываю его каждый раз, когда приложение запускается. Я не знаю, плохая это практика или нет.

Мое требование состоит в том, что я должен прослушивать отправленные смс вне жизненного цикла активности. Это работает так, как ожидалось, но всегда ли мне регистрировать это в методе OnCreate? Также я хочу поместить те же строки в onReceive() BroadcastReceiver, чтобы гарантировать, что я слушаю после перезагрузки устройства.

ОБНОВЛЕНИЕ: BroadcastReceiver каким-то образом не регистрирует КонтентОбсервер. Я также пытался использовать getApplicationContext() в качестве контекста в BroadcastReceiver, но безуспешно.

Подробнее здесь: https://stackoverflow.com/questions/436 ... definitely
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»