Мне нужен фрагмент/активность от широковещательного приемника, но я не могу найти решение.Замечание фрагмента или действия от широковещательного приемника
Описание: Когда фрагмент запускается, мой метод проверяет, включен ли модуль GPS, если он не просит его включить его. Теперь у меня есть широковещательный приемник для gps, и когда он включен или выключен, я получаю сообщение, это работает. Но теперь мне нужно сделать что-то вроде интерфейса, и когда я получаю GPS вкл/выкл, я хочу вызвать мой метод в фрагменте. Я не уверен, если ясно, что мне нужно. Здесь я пробую его с интерфейсом, но затем я нахожу, поэтому я не могу передать объект интерфейса для трансляции конструктора приемника.
Мое решение с интерфейсом, но не работает:
public class GpsLocationReceiver extends BroadcastReceiver {
private INotifyGpsTurnedOn iNotifyGpsTurnedOn = null;
public GpsLocationReceiver(INotifyGpsTurnedOn iNotifyGpsTurnedOn) {
this.iNotifyGpsTurnedOn = iNotifyGpsTurnedOn;
}
@Override
public void onReceive(Context context, Intent intent) {
LocationManager lm = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE);
boolean isEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
Toast.makeText(context, isEnabled+"",
Toast.LENGTH_SHORT).show();
if(isEnabled){
iNotifyGpsTurnedOn.iniGps();
}
else{
iNotifyGpsTurnedOn.askTurnOnGps();
}
}
public interface INotifyGpsTurnedOn {
public void iniGps();
public void askTurnOnGps();
}
}
В классе фрагмента у меня есть реализовать интерфейс с методами, зарегистрировать приемник и т.д. ...
GpsLocationReceiver m_gpsChangeReceiver = new GpsLocationReceiver(this);
getActivity().registerReceiver(m_gpsChangeReceiver, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));
@Override
public void iniGps() {
mGps.startGps(false);
}
@Override
public void askTurnOnGps() {
mGps.askUserToTurnOnGPS(getActivity());
}
Если ваш фрагмент реализует интерфейс 'INotifyGpsTurnedOn', я не понимаю, почему это не сработает. Какую ошибку вы получаете? –
Я не могу использовать интерфейс, потому что я не могу передать iNotifyGpsTurnedOn в конструкторе GpsLocationReceiver, это запрещено в ext. BroadcastReceiver. –
Конечно, вы можете. Какую ошибку вы получаете? –