我需要广播接收机的通知片段/活动,但找不到解决方案。
说明:当片段启动我的方法时,如果没有要求用户将其打开,请检查GPS模块是否已打开。现在,我已经为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());
}
这样很好。您可以声明一个,Interface
并在构造器中提供它。只要您实例化您BroadcastReceiver
自己,并且不要让Android执行此操作,此方法就起作用。您无需BroadcastReceiver
在清单中声明。
您得到的原因Exception: Unable to instantiate receiver no empty constructor.
是因为Android试图实例化BroadcastReceiver
。(无论出于何种原因)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句