Как отправить местоположение (долготу и широту) через функцию onreceive ()? - PullRequest
1 голос
/ 28 октября 2011

У меня есть приложение, которое должно отправлять местоположение при получении SMS-сообщения. Моя проблема заключается в том, как отправить местоположение, так как я наследую класс broadcastreceiver и не могу унаследовать MapActivity, чтобы использовать locationmanager для получения местоположения (множественное наследование неразрешено в Java). Может кто-нибудь дать мне представление, как это сделать?

Ответы [ 2 ]

1 голос
/ 28 октября 2011

В onReceive вы получаете ссылку на объект контекста вашего приложения. Таким образом, вы можете получить это так:

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

LocationManager не имеет ничего общего с MapAcctivity. Вы можете получить ссылку на него везде, где у вас есть объект контекста (Любая деятельность / служба, а также в методе BroadcastReceiver onReceive и в других местах).

0 голосов
/ 28 октября 2011

Здесь вам не нужно множественное наследование, вы можете просто делегировать : экземпляр вашего широковещательного приемника может просто вызывать методы для другого объекта, например Activity.

An внутренний класс может быть использован для этого, так что у вас будет код для получателя и для вашей Деятельности в одном классе, если это то, что вы хотите.

Пример:

public class MyActivity extends MapActivity {

  protected class MyReceiver extends BroadcastReceiver {

    // ...

    void someMethod() {
      MyActivity.this.doSomethingInActivity( value );
    }

  }


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

}
...