我有一个应用程序,需要在收到短信时发送位置。我的问题是如何发送位置,因为我继承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) {...}
}