如何通过onreceive()函数发送位置(经度和纬度)



我有一个应用程序,需要在收到短信时发送位置。我的问题是如何发送位置,因为我继承broadcastreceiver类,不能继承MapActivity利用locationmanager获取位置。(java中不允许多重继承)。有人能告诉我怎么做吗?

onReceive,你得到一个引用到你的应用程序的对象。所以你可以这样做:

LocationManager lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);

LocationManager与mapactivity无关。你可以在任何地方得到它的引用,你得到一个上下文对象(任何活动/服务,在BroadcastReceiver onReceive方法,和其他地方。)

这里你不需要多重继承,你只需要委托:你的广播接收器的实例可以简单地调用另一个对象的方法,例如Activity

一个内部类可以用来做这件事,这样你就可以在同一个类中拥有接收器和Activity的代码,如果这是你想要的。

例:

public class MyActivity extends MapActivity {
  protected class MyReceiver extends BroadcastReceiver {
    // ...
    void someMethod() {
      MyActivity.this.doSomethingInActivity( value );
    }
  }

  protected void doSomethingInActivity(Object param) {...}
}

最新更新