如何从LocationListener的onProviderDisabled方法内发送通知?
到目前为止,我一直在使用:
Toast.makeText(mainmenu, "GPS Location providers are disabled... blah blah", Toast.LENGTH_LONG).show();}});
但是这需要使用在mainmenu类首次实例化时存储的静态mainmenu变量 - 我收集它是一个坏主意,以防mainmenu对象从内存中删除我想 - 所以我想我应该使用通知
我想我需要能够引用一个活动来制作意图 - 但是我可以参考哪些活动,因为我的位置监听器不存储这样的引用?
答案 0 :(得分:1)
我不确定这是否会一直有效,但您可以致电Application.getApplicationContext()
并使用它。
如果您的LocationListener是Activity的一部分(以内部类的形式),您也可以使用this.MyActivity
。
答案 1 :(得分:1)
您可以使用自己的界面。
public interface LocationUpdatesReveiver {
/** onLocationChanged */
public void onLocationChanged(Location location);
}
让您的活动类实现该接口并将其引用传递给LocationListener类
public class MyActivity extends Activity implements LocationUpdatesReveiver{
...
location = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
listener = new LocListener(MyActivity.this);
}
调用您活动的实施方法
public class LocListener implements LocationListener {
private LocationUpdatesReveiver receiver;
public LocListener(LocationUpdatesReveiver receiver) {
this.receiver = receiver;
}
@Override
public void onLocationChanged(Location location) {
if(null != location){
receiver.onLocationChanged(location);
}
}
}
这是针对onLocationUpdate的,但你几乎可以使用相同的技术
答案 2 :(得分:0)
您可以设置您的课程:
public class myClass extends android.app.Application implements LocationListener{
private LocationManager locationManager;
private String provider;
private Location location;
...
然后在该类中使用该函数:
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "Disenabled provider " + provider,
Toast.LENGTH_SHORT).show();
}