Android рдкрд░ XMPP-SMS рдЧреЗрдЯрд╡реЗ



рдкрд░рд┐рдЪрдп

рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдПрдВрдбреНрд░реЙрдЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЛ рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдСрд░реНрдбрд░ рдбреЗрдЯрд╛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рд▓ рдпрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдПрдХ рдЬреАрдПрд╕рдПрдо рдореЙрдбреЗрдо рдФрд░ C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╣рд┐рдд рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХреНрд╕рдПрдордкреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреЗрдо рдФрд░ рдЧреНрд▓реЙрдХреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдЯреА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рддрд░рдл рд╕реЗ рдореИрдВрдиреЗ рдСрд░реНрдбрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП xmpphp рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд╣рд░ рд╕рдордп рдХрдВрдкреНрдпреВрдЯрд░ рд░рдЦрдирд╛ рдкрдбрд╝рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдСрд░реНрдбрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рдиреЗ рдШрдбрд╝реА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдКрд░реНрдЬрд╛ рдХреА рдЦрдкрдд, рд░рд╛рдд рдореЗрдВ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рд╕реЗ рд╢реЛрд░ рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреА рдирд┐рд░рдВрддрд░ рдирд┐рдЧрд░рд╛рдиреАред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп, рдЬрд┐рд╕реЗ рд╣рдо рдкреВрд░реЗ рд▓реЗрдЦ рдореЗрдВ рдмрдирд╛рдПрдВрдЧреЗ, рдПрдХреНрд╕рдПрдордкреАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдПрд╕рдПрдордПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдмрд╛рдж рдХреЗ рдкреНрд░рд╕рд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдПрдбреАрдЯреА рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╣рдг рд╣реЛрдЧрд╛ред XMPP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП, Android рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП SMACK рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

1. рдПрд╕рдПрдордПрд╕ рднреЗрдЬрдирд╛

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдмрдирд╛рдПрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╣рдг, Android рдкреНрд░реЛрдЬреЗрдХреНрдЯ (Ctrl + N - Android - Android рдкреНрд░реЛрдЬреЗрдХреНрдЯ) рдмрдирд╛рдПрдВред



рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐ (рдЕрдиреБрдорддрд┐) рдЬреЛрдбрд╝реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╣рдг рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ, рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ, "рдЬреЛрдбрд╝реЗрдВ ..." рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ "рдЙрдкрдпреЛрдЧ рдЕрдиреБрдорддрд┐" рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, "рдУрдХреЗ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд┐рд░ рдЖрдк рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ, рдЦреЛрдЬрдиреЗ рдФрд░ рдЪрдпрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдЖрдЗрдЯрдо android.permission.SEND_SMS рдЪреБрдиреЗрдВ , рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд╣реЗрдЬреЗрдВред рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЯреИрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:



рдЕрдм, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ рдирд┐рдпрдорд┐рдд рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдореИрдиреЗрдЬрд░ (рд╡рд┐рдВрдбреЛ - рдПрд╡реАрдбреА рдореИрдиреЗрдЬрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рдирдП рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдПрдВ:



рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдСрдирдХреНрд░рд┐рдПрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ , рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

package ru.blagin.xmppsmsgate; import android.app.Activity; import android.os.Bundle; import android.telephony.SmsManager; public class XMPPSMSGateActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage("5556",null,"Text SMS",null,null); } } 


рдЕрдЧрд▓рд╛, рд╣рдо рджреЛрдиреЛрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдирдВрдмрд░ рд╣реЛрдЧрд╛, рдЬрдм рдПрдореБрд▓реЗрдЯрд░ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЖрд░рдВрднреАрдХрд░рдг рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдЕрдкрдирд╛ рдЖрд╡реЗрджрди 5554 рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛, рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдирдВрдмрд░ 5556 рдХреЗ рд╕рд╛рде рдПрдореБрд▓реЗрдЯрд░ рд╣рдорд╛рд░реЗ рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред ред



рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП SmsManager рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, SmsManager.getDefault () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрд╕рдПрдордПрд╕ SendTextMessage рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ:

рдбреЗрд╕реНрдЯрд┐рдиреАрдбреНрд░реЗрд╕ - рд╡рд╣ рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ;
scAddress - рдЖрдкрдХреЗ рдореЛрдмрд╛рдЗрд▓ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдПрд╕рдПрдордПрд╕ рдХреЗрдВрджреНрд░ рдирдВрдмрд░ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рд╢реВрдиреНрдп рдорд╛рди рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
рдкрд╛рда - рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рдкрд╛рда;
sentIntent - рдпрджрд┐ рдХреЛрдИ рд╢реВрдиреНрдп рдорд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ PendingIntent рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
deliveryIntent - рдпрджрд┐ рдХреЛрдИ рд╢реВрдиреНрдп рдорд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ PendingIntent рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдХрдИ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрд░ рд╕рдВрджреЗрд╢ рд╡рд┐рддрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм SendTextMessage рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ 160 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреАред рд▓рдВрдмреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ sendMultipartTextMessage рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рд▓рдВрдмрд╛рдИ рдореЗрдВ 160 рд╕реЗ рдХрдо рд╡рд░реНрдг рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдореЗрдВ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рдФрд░ рдЙрдирдХреА рдбрд┐рд▓реАрд╡рд░реА рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреНрд░рд╕рд╛рд░рдг рдЗрд░рд╛рджреЛрдВ рдХреЗ рджреЛ рд░рд┐рд╕реАрд╡рд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдЗрд░рд╛рджреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкрд╛рда рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рд╕рдВрд╕рд╛рдзрди рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдореЗрдВ TextView рд╡рд┐рдЬреЗрдЯ рдЬреЛрдбрд╝реЗрдВред
 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="top|left"/> </LinearLayout> 


рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрд╡реЗрджрди рдХреЛрдб рдирд┐рдореНрди рд░реВрдк рд▓реЗрдЧрд╛:

 package ru.blagin.xmppsmsgate; import java.util.ArrayList; import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.SmsManager; import android.widget.TextView; public class XMPPSMSGateActivity extends Activity { TextView tv = null; String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; private BroadcastReceiver sent = null; private BroadcastReceiver delivered = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // TextView      tv = (TextView) findViewById(R.id.textView); //  :  IntentFilter in_sent = new IntentFilter(SENT); sent = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { tv.append(intent.getStringExtra("PARTS")+": "); tv.append(intent.getStringExtra("MSG")+": "); switch(getResultCode()) { case Activity.RESULT_OK: tv.append("SMS \n"); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: tv.append(" \n"); break; case SmsManager.RESULT_ERROR_NO_SERVICE: tv.append(" \n"); break; case SmsManager.RESULT_ERROR_NULL_PDU: tv.append("Null PDU\n"); break; case SmsManager.RESULT_ERROR_RADIO_OFF: tv.append(" \n"); break; } } }; registerReceiver(sent, in_sent); //  :  IntentFilter in_delivered = new IntentFilter(DELIVERED); delivered = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { tv.append(intent.getStringExtra("PARTS")+": "); tv.append(intent.getStringExtra("MSG")+": "); switch (getResultCode()) { case Activity.RESULT_OK: tv.append("SMS \n"); break; case Activity.RESULT_CANCELED: tv.append("SMS  \n"); break; } } }; registerReceiver(delivered, in_delivered); SendSMS("_","  > 160 ."); } //  SMS  public void SendSMS(String phone, String message) { SmsManager sms = SmsManager.getDefault(); ArrayList<String> al_message = new ArrayList<String>(); al_message = sms.divideMessage(message); ArrayList<PendingIntent> al_piSent = new ArrayList<PendingIntent>(); ArrayList<PendingIntent> al_piDelivered = new ArrayList<PendingIntent>(); for (int i = 0; i < al_message.size(); i++) { Intent sentIntent = new Intent(SENT); sentIntent.putExtra("PARTS", ": "+i); sentIntent.putExtra("MSG", ": "+al_message.get(i)); PendingIntent pi_sent = PendingIntent.getBroadcast(this, i, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT); al_piSent.add(pi_sent); Intent deliveredIntent = new Intent(DELIVERED); deliveredIntent.putExtra("PARTS", ": "+i); deliveredIntent.putExtra("MSG", ": "+al_message.get(i)); PendingIntent pi_delivered = PendingIntent.getBroadcast(this, i, deliveredIntent, PendingIntent.FLAG_UPDATE_CURRENT); al_piDelivered.add(pi_delivered); } sms.sendMultipartTextMessage(phone, null, al_message, al_piSent, al_piDelivered); } @Override protected void onDestroy() { if(sent != null) unregisterReceiver(sent); if(delivered != null) unregisterReceiver(delivered); super.onDestroy(); } } 


рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░, рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реЗрд▓ рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдВрдХрдбрд╝рд╛ рд▓рдВрдмреЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред



2. XMPP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛рдирд╛

рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ XMPP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реЗрд╡рд╛ (рд╕реЗрд╡рд╛) рдмрдирд╛рдПрдВ рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓реЗрдЧреАред рд╕реЗрд╡рд╛, SMACK рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рд╕рд╛рд░рдг рдЗрд░рд╛рджреЛрдВ рдХреА рдорджрдж рд╕реЗ, рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрд╕рдПрдордПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдмрд╛рдж рдореЗрдВ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреА рдореБрдЦреНрдп рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╣рдг рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреИрдХреЗрдЬ рдирд╛рдо рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдореЗрдиреВ рдореЗрдВ рдирдпрд╛ рдФрд░ рд╡рд░реНрдЧ рдЪреБрдиреЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЫрд╡рд┐ рдкрд░ рдЗрдВрдЧрд┐рдд рдЖрд╡рд╢реНрдпрдХ рдЖрдЗрдЯрдо рднрд░реЗрдВ рдФрд░ "рд╕рдорд╛рдкреНрдд" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:



рдЗрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрдкрдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдореИрдирдЗрдлреЗрд╕реНрдЯ.рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд░реНрд╡рд┐рд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХреНрд▓рд┐рдкреНрд╕ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдлрд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЛрдбреНрд╕ рд╕реЗрдХреНрд╢рди рдореЗрдВ "Add" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЬреЛ рд╕рд░реНрд╡рд┐рд╕ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдФрд░ "рдУрдХреЗ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЖрдкрдХреЛ рд╕реЗрд╡рд╛ рдХреЗ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреИрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:



рдЕрдм рд╣рдо рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдиреБрдорддрд┐ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд╡рд╣ рдСрдирд▓рд╛рдЗрди рдЬрд╛ рд╕рдХреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдП рдЧрдП рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рд░ android.permission.INTERNET рдЪреБрдиреЗрдВред

рдЕрдЧрд▓рд╛ рдХрджрдо SMACK рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рдЗрд╕реЗ http://code.google.com/p/asmack/ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ , рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ, рдлрд┐рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдг рдЦреЛрд▓реЗрдВ, рдЧреНрд░рд╣рдг рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ , рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдореЗрдиреВ рдореЗрдВ, рдЧреБрдг рдЪреБрдиреЗрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдмрд╛рдИрдВ рд╕реВрдЪреА рдореЗрдВ рдЬрд╛рд╡рд╛ рдмрд┐рд▓реНрдб рдкрд╛рде рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдлрд┐рд░ "рдмрд╛рд╣рд░реА рдЬрд╛рд░ рдЬреЛрдбрд╝реЗрдВ ..." рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣реЗрдЬреЗ рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдвреВрдВрдвреЗрдВ рдФрд░ рдЗрд╕реЗ рдЬреЛрдбрд╝реЗрдВред рдмрд╛рд╣рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдирд┐рдореНрди рд░реВрдк рд▓реЗрдЧреА:



рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрд╡рд╛ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдСрдирдХреНрд░рд┐рдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрд╕рдПрдордПрдордкреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕рдПрдордкреАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢, рд╕рд╛рде рд╣реА рд╕реЗрд╡рд╛ рдХреЗ рдЕрдиреНрдп рд╕реНрдЯреЗрдЯрд╕ рдкреНрд░рд╕рд╛рд░рдг рдЗрд░рд╛рджреЗ рднреЗрдЬрдХрд░ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

 package ru.blagin.xmppsmsgate; import java.util.Collection; import org.jivesoftware.smack.Chat; import org.jivesoftware.smack.ChatManager; import org.jivesoftware.smack.ConnectionConfiguration; import org.jivesoftware.smack.PacketListener; import org.jivesoftware.smack.SASLAuthentication; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.filter.AndFilter; import org.jivesoftware.smack.filter.PacketFilter; import org.jivesoftware.smack.filter.PacketTypeFilter; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Packet; import org.jivesoftware.smack.packet.Presence; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; public class XMPPSMSGateService extends Service { private ConnectionConfiguration connConfig; private XMPPConnection connection; Thread th = null; Intent in = new Intent("SMSGate_Service"); @Override public IBinder onBind(Intent arg0){return null;} @Override public int onStartCommand(Intent intent, int flags, int startId){return Service.START_STICKY;} @Override public void onCreate() { super.onCreate(); th= new Thread() { public void run() { in.putExtra("Message","The service is started"); sendBroadcast(in); connConfig = new ConnectionConfiguration(/*domen*/,5222,/*server*/); SASLAuthentication.supportSASLMechanism("PLAIN"); connConfig.setCompressionEnabled(false); connConfig.setSASLAuthenticationEnabled(true); connection = new XMPPConnection(connConfig); try { in.putExtra("Message","Connect to the XMPP server"); sendBroadcast(in); connection.connect(); in.putExtra("Message","Login into the XMPP server"); sendBroadcast(in); connection.login(/*login*/,/*password*/); if(connection.isConnected()) { in.putExtra("Message","SMS Gate online."); sendBroadcast(in); }else { in.putExtra("Message","SMS Gate offline."); sendBroadcast(in); } Presence presence = new Presence(Presence.Type.available); presence.setStatus("SMS Gate"); presence.setPriority(30); connection.sendPacket(presence); PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class)); PacketListener myListener = new PacketListener() { public void processPacket(Packet packet) { if(packet instanceof Message) { Message message = (Message) packet; String messageBody = message.getBody(); String JID = message.getFrom(); if(messageBody == null) { messageBody = ""; Collection<Message.Body> bodies = message.getBodies(); for(Message.Body r:bodies){messageBody += r.getMessage();} } if(messageBody.equals("ping")){sendMessage(JID,"pong");} in.putExtra("Message",messageBody); sendBroadcast(in); } } }; connection.addPacketListener(myListener, filter); while(connection.isConnected()) { try{Thread.sleep(1000);}catch(Exception e){Log.e(this.getClass().getName(),e.getMessage());} } }catch(Exception e) { Log.e(this.getClass().getName(),e.getMessage()); in.putExtra("Message","ERROR: "+e.getMessage()); sendBroadcast(in); } } public void sendMessage(String to, String message) { if(!message.equals("")) { ChatManager chatmanager = connection.getChatManager(); Chat newChat = chatmanager.createChat(to, null); try{newChat.sendMessage(message);} catch(Exception e) {Log.e(this.getClass().getName(),e.getMessage());} } } }; th.start(); } @Override public void onDestroy() { if(connection.isConnected()){connection.disconnect();th = null;} in.putExtra("Message","The service is stopped"); sendBroadcast(in); } } 


рд╕реЗрд╡рд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рд╕рд╛рд░рдг рдЗрд░рд╛рджреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рд╕рд╛рд░рдг рдЗрд░рд╛рджреЛрдВ рдХреЗ рдПрдХ рдФрд░ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдХреЗ рдСрдирдХреНрд░рд┐рдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

 IntentFilter filter = new IntentFilter(); filter.addAction("SMSGate_Service"); service = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals("SMSGate_Service")) { String message = intent.getStringExtra("Message"); tv.append(message+"\n"); int i = message.indexOf("@"); if(i != -1) { String phone = message.substring(0, i); if(phone.length() != 0) { String text = message.substring(i+1,message.length()); tv.append("Sending SMS...\n"); SendSMS(phone,text); }else{/*phone: 0*/} }else{/*not sms message*/} } } }; registerReceiver(service, filter); 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрдкрд░реНрдпреБрдХреНрдд рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрд╕рдПрдордПрд╕ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рд╕рдВрджреЗрд╢ рдЯрд╛рдЗрдк phone_number @ message_text рдХреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:

5556@

рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдореЗрдВ, рдСрдирдХреНрд░рд┐рдПрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
 startService(new Intent(this,XMPPSMSGateService.class)); 

рд╕реЗрд╡рд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП onDestroy рд╡рд┐рдзрд┐ рдореЗрдВ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕ рдореЗрдВ, рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
 stopService(new Intent(this,XMPPSMSGateService.class)); 

рдЕрдм рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЖрдИрдПрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВред рдкрд░рд┐рдгрд╛рдо рдЫрд╡рд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рдирд┐рд╖реНрдХрд░реНрд╖

рдпрд╣ рд▓реЗрдЦ рдПрдХ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд▓реЗрдЦ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╢реБрд░реБрдЖрддреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЦреБрдж рдЬрд╛рдирддрд╛ рд╣реВрдВред рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрдИ рдХрдорд┐рдпрд╛рдВ рдФрд░ рд╕реАрдорд╛рдПрдБ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рд╕рдВрджреЗрд╢ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░ рд╣реА рдПрд╕рдПрдордПрд╕ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕реЗрд╕ рдХреА рдХреЛрдИ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ WI-FI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЬрдм рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрд▓реАрдк рдореЛрдб рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмреИрдЯрд░реА рдкрд╛рд╡рд░ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП WI-FI рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рдИ-рдлрд╛рдИ рдХреАрдк рдЕрд▓рд╛рдЗрд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд╛рдкреНрдд рдФрд░ рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдХреЛрдИ рд▓реЙрдЧрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЖрд╡реЗрджрди рдХрд╛ рджрд╛рдпрд░рд╛ рдХрд╛рдлреА рд╡рд┐рд╕реНрддреГрдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдСрд░реНрдбрд░ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рд▓реЗрдХрд░ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдПрд╕рдПрдордПрд╕ рдЧреЗрдЯрд╡реЗ рдмрдирд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЖрд╡реЗрджрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдбред

рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рд╣рд┐рддреНрдп рдХреА рд╕реВрдЪреА
  1. рдПрд▓реЗрдХреНрд╕реА рдЧреЛрд▓реЛрд╢рдкреЛрд╡, Google Androidред рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, 2012
  2. рдПрд▓реЗрдХреНрд╕реА рдЧреЛрд▓реЛрд╢рдкреЛрд╡, Google Androidред рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЪрд╛рд░, 2012
  3. рд╕реНрдореИрдХ рдПрдкреАрдЖрдИ ( рдПрд╕рд┐рди ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХреНрд╕рдПрдордкреАрдкреА рдмреЙрдЯ ред

Source: https://habr.com/ru/post/In135627/


All Articles