Как передать строку из BroadcastReceiver во фрагмент
Когда отлавливаю сообщения, с активити всё работает, а во фрагмент не получается.
Прошу подсказать.
SmsReceiver.java
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// ...
// Для фрагмента пытаюсь сделать так
Intent intent1 = new Intent("ru.myicmsapp");
intent1.putExtra("body", body);
context.sendBroadcast(intent1);
}
}
TestFragment.java
public class TestFragment extends Fragment {
Context context;
MainActivity act;
// ...
private final BroadcastReceiver broadCastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("UUU", "smsMessageStr = ");
if (intent != null && intent.getExtras() != null) {
String smsMessageStr = intent.getExtras().getString("body");
if (smsMessageStr != null ) {
Log.e("UUU", "smsMessageStr = " + smsMessageStr);
}
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LocalBroadcastManager.getInstance(getActivity())
.registerReceiver(broadCastReceiver, new IntentFilter("ru.myicmsapp"));
return inflater.inflate(R.layout.fragment_test, container, false);
}
// ...
}
Ответы (1 шт):
Автор решения: Олег Никифоров
→ Ссылка
Решил. Оказывается LocalBroadcastManager нормально не работает. В ресивере сделал
Intent intent1 = new Intent(String.valueOf(Intent.FLAG_ACTIVITY_NEW_TASK));
intent1.putExtra("body", body);
intent1.putExtra("address", sms_from);
context.sendBroadcast(intent1);
А во фрагменте, регистрацию так
getActivity().registerReceiver(broadCastReceiver, filter);