我有一个应用程序需要在接收短信时发送位置。我的问题是如何发送位置,因为我继承了broadcastreceiver类,并且不能继承MapActivity来利用locationmanager来获取位置。(多重继承没有允许在java)。任何人都可以告诉我如何这样做?
答案 0 :(得分:1)
在onReceive
中,您会获得对应用的竞争对象的引用。
所以你可以这样做:
LocationManager lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
LocationManager与MapAcivity无关。您可以在任何有上下文对象(任何活动/服务,以及BroadcastReceiver onReceive方法和其他地方)的任何地方获得对它的引用。
答案 1 :(得分:0)
这里不需要多重继承,只需委托:广播接收器的一个实例可以简单地调用另一个对象上的方法,例如: Activity
。
可以使用内部类来做到这一点,这样你就可以在同一个类中拥有接收者和Activity的代码,如果这就是你想要的。
例:
public class MyActivity extends MapActivity {
protected class MyReceiver extends BroadcastReceiver {
// ...
void someMethod() {
MyActivity.this.doSomethingInActivity( value );
}
}
protected void doSomethingInActivity(Object param) {...}
}