Як адправіць месцазнаходжанне (шырыню і даўгату) праз OnReceive функцыі ()?

У мяне ёсць дадатак, якое неабходна адправіць месцазнаходжання на атрыманне праблемы sms.My ў тым, як адправіць месца, так як я спадчыннік клас BroadcastReceiver і не магу атрымаць у спадчыну MapActivity выкарыстоўваць locationmanager, каб атрымаць месцазнаходжанне. (Множны спадчыну ня дазволена ў Java ) .Can хто-небудзь даць мне ўяўленне пра тое, як зрабіць гэта?

1

2 адказы

У OnReceive , вы атрымаеце спасылку на аб'ект Contect вашага прыкладання. Такім чынам, вы можаце атрымаць яго такім чынам:

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

LocationManager не мае нічога агульнага з MapAcivity. Вы можаце атрымаць спасылку на яго ў любым месцы вы ёсць аб'ект кантэксту (Любая дзейнасць/паслугі, а таксама ў метадзе BroadcastReceiver OnReceive, і ў іншых месцах таксама.)

1
дададзена
Я змяніў сваё code.Now гэта працуе, але замест таго, каб пасылаць сваё ўласнае месцазнаходжанне ён адпраўляе атрыманае паведамленне назад again.Why гэта так?
дададзена аўтар dark_shadow, крыніца
Вось мой код: pastebin.com/53ZJH3iN Калі вы хочаце ўбачыць якой-небудзь іншай файл (напрыклад, .xml) Калі ласка дайце мне ведаць, я выкладу яго тут.
дададзена аўтар dark_shadow, крыніца
Гэта мой код пасля выпраўлення праблемы, як прапанаваў вам pastebin.com/yKitMftU і з гэтым я даю тлумачэнняў, якія могуць дапамагчы вам прайсці праз код лёгка (шкада што імёны зменных я не магу змяніць іх зараз beacuse яны выкарыстоўваюцца ў іншых месцах, але я буду старацца, каб іх імёны чытаным чалавекам у будучыні). Пачынаючы з самага пачатку ў мяне ёсць некаторыя грамадскія статычныя зменныя, якія я выкарыстоўваю, каб стварыць прадстаўленне спісу атрыманых SMS-паведамленняў, так што яны не маглі б быць ваша неспакой, пасля яго ў мяне ёсць locationManager, даўгату і latitude.After што ў OnReceive функцыі, працяг ...
дададзена аўтар dark_shadow, крыніца
Я здабываючы адрас і цела атрымалі смс. «Улі» пераменная змяшчае радок адпраўніка + цела лісты. «Str2» з'яўляецца пераменным, якая ўтрымлівае адрас адпраўніка, які я выкарыстоўваю ў sendTextMessage на аўтаадказчык прыманага смс. "Str3 «гэта зменная, якая змяшчае радок для параўнання стану аўтаадказніка (я выкарыстаў зменную Request_Accepted, каб праверыць, калі адказаць таму).» MSG »з'яўляецца зменная, якая змяшчае радок даўгаты і шыраты, якія я злучае з маім" autoReplyToken "і захоўваць гэта значэнне ў «autoReplyText» і паслаў адпраўнік.
дададзена аўтар dark_shadow, крыніца
Цяпер праблема замест адпраўкі гэтага месца, ён пасылае паведамленне адпраўшчыка (які змяшчае месцазнаходжанне адпраўніка) у sender.If ў вас ёсць якія-небудзь іншыя сумненні, калі ласка, спытаеце мяне і даць мне некаторы ўяўленне пра тое, дзе я раблю няправільна.
дададзена аўтар dark_shadow, крыніца
А пасылае да B паведамленне, якое змяшчае яго месцазнаходжанне, таму B аўтаматычна пасылае назад у яго месцазнаходжанне і прымацоўвацца «autoReplyToken» у гэтым паведамленні так, што А не паслаць назад да B (у асноўным мэта «autoReplyToken» з'яўляецца прадухіленне зацыклення смс ад а да Б і наадварот некалькі разоў) .о гэта цяпер ясна?
дададзена аўтар dark_shadow, крыніца
Пакажыце нам код.
дададзена аўтар Jong, крыніца
Перш за ўсё, вы сапраўды павінны даць значныя імёны зменных. Гэта цяжка, каб прачытаць гэта ... А вы яшчэ не замацаваліся, што я прапанаваў - Ваш код не будзе нават скампіляваць у цяперашні час. Я думаю, вы павінны змяніць яго і зрабіць яго больш чытэльным чалавекам, то выправіць праблемы.
дададзена аўтар Jong, крыніца
Дазвольце мне зразумець. Мы людзі А, Б. пасылаюць быць паведамленнем, пачынаючы з «autoReplyToken», таму B аўтаматычна пасылае назад у яго месца?
дададзена аўтар Jong, крыніца

Вам не трэба будзе множны ўспадкоўванне тут, вы можаце проста дэлегат : асобнік вашага радыёвяшчальнага прымача можа проста выклікаць метады іншага аб'екта, напрыклад, элемент актыўнасць .

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

Напр.:

public class MyActivity extends MapActivity {

  protected class MyReceiver extends BroadcastReceiver {

   //...

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

  }


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

}
0
дададзена