如何从LocationListener的onProviderDisabled方法内发送通知

时间:2011-06-24 17:56:50

标签: android notifications android-intent toast locationlistener

如何从LocationListener的onProviderDisabled方法内发送通知?

到目前为止,我一直在使用:

Toast.makeText(mainmenu, "GPS Location providers are disabled... blah blah", Toast.LENGTH_LONG).show();}});

但是这需要使用在mainmenu类首次实例化时存储的静态mainmenu变量 - 我收集它是一个坏主意,以防mainmenu对象从内存中删除我想 - 所以我想我应该使用通知

我想我需要能够引用一个活动来制作意图 - 但是我可以参考哪些活动,因为我的位置监听器不存储这样的引用?

3 个答案:

答案 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();
}