У меня есть ретранслятор в моем фрагменте, чтобы отслеживать все полученные SMS.Широковещательный приемник в фрагменте
private BroadcastReceiver smsBroadcastReceiver;
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
smsBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("smsBroadcastReceiver", "onReceive");
}
};
}
@Override
public void onStart() {
super.onStart();
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(smsBroadcastReceiver, filter);
}
@Override
public void onStop() {
super.onStop();
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(smsBroadcastReceiver);
}
и разрешения в манифесте:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
Проблема в том, я никогда не получаю журнал Log.e("smsBroadcastReceiver", "onReceive");
Я определенно получаю SMS, пока приемник по-прежнему зарегистрирован.
Однако, если я пишу приемник как отдельный класс и помещаю его в манифест, тогда вызывается onReceive().
Я что-то пропустил?
ANSW er, это обеспечивает лучшую производительность: http://stackoverflow.com/a/42323093/3923839 – abedfar