Я попытался обернуть голову вокруг Android BroadcastReceiver, но безуспешно. Я пытаюсь реализовать что-то простое:
- Прослушивание входящего SMS
- Проверить, сохранен ли номер
- Если оно сохранено, сделать что-то
Пока я зарегистрировал / создал BroadcastReceiver, и я могу перехватывать входящие сообщения. Я сделал это следующим образом:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
//do things
}
}
}
Я зарегистрировал получателя в файле манифеста следующим образом:
<receiver
android:name=".SmsReceiver"
android:permission="android.permission.BROADCAST_SMS"
android:exported="true">
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
До сих пор все было хорошо. Но вот большое НО: я также создал класс UserManager с несколькими базовыми c задачами, например: добавление нового пользователя, удаление пользователя, проверка существования пользователя и т. Д. c.
Я храню пользователей в HashMap (phoneNumber, Name).
Мои вопросы:
Как передать объект в мой BroadcastReceiver ? (Я хочу иметь доступ к HashMap из класса "UserManager")
Я нашел много тем, касающихся BroadcastReceivers. Некоторые из них сказали, что существует пара способов объявления приемника вещания. Например, вы могли бы сделать это так, как я (объявив это в Манифесте), или вы могли бы сделать что-то более ... основанное на контексте? Как объявить его BroadcastReceiver br = new MyBroadcastReceiver () и зарегистрировать в нем intentFilters. В чем разница? Какой из них мне следует использовать?
- Есть ли что-то, что называется "хорошей практикой"? На что следует обратить внимание? Знаете ли вы какой-либо материал, который четко объясняет различные способы использования broadcastReceiver?