Android listens to the SMS sending status and obtains the SMS Service Center Number

Source: Internet
Author: User

Although there are examples of listening to the sending status of SMS on the Internet, it is still too complicated. Write one by yourself.

The SMS service center number is obtained through the smsmessage. getservicecenteraddress () method. That is, it can only be obtained from text messages that have been stored on your mobile phone. In this example, the idea of getting the SMS service number is to send a custom string to 10086 and intercept the SMS service number from the 10086 downstream. After the test, we found that although the mobile phone card is Shenzhen, the phone number of the SMS service center was from Foshan. But at least know the province.

China SMS service center number see: http://zdm2008.blog.163.com/blog/static/20491545201062210921272/

For details about China Unicom's SMS service center number, see: http://wenku.baidu.com/view/7acddc1b6bd97f192279e9c0.html

This example also uses Java code for layout.

 

Send: whether the SMS is sent.

Delivery: whether the text message is sent to the recipient.

 

Package lab. sodino. servicecenteraddress; <br/> Import android. app. activity; <br/> Import android. app. pendingintent; <br/> Import android. content. broadcastreceiver; <br/> Import android. content. context; <br/> Import android. content. intent; <br/> Import android. content. intentfilter; <br/> Import android. OS. bundle; <br/> Import android. telephony. GSM. smsmanager; <br/> Import android. telephony. GSM. smsmessage; <br /> Import android. view. gravity; <br/> Import android. view. view; <br/> Import android. widget. button; <br/> Import android. widget. linearlayout; <br/> Import android. widget. textview; <br/> Import android. widget. linearlayout. layoutparams; <br/> public class servicecenteraddressact extends activity {<br/> Private Static final string action_sms_send = "lab. sodino. SMS. send "; <br/> Private Static final string AC Tion_sms_delivery = "lab. sodino. SMS. delivery "; <br/> Private Static final string action_sms_receiver =" android. provider. telephony. sms_received "; <br/> private textview servicecenteraddresstext; <br/> private smsreceiver sendreceiver; <br/> private smsreceiver deliverypolicer; <br/> private smsreceiver; <br/>/** called when the activity is first created. */<br/> @ override <br/> Public void Oncreate (bundle savedinstancestate) {<br/> super. oncreate (savedinstancestate); <br/> linearlayout. layoutparams layparams = new linearlayout. layoutparams (<br/> layoutparams. fill_parent, layoutparams. wrap_content); <br/> linearlayout linearlay = new linearlayout (this); <br/> linearlay. setorientation (linearlayout. vertical); <br/> linearlay. setlayoutparams (layparams); <br/> textview = new textview (This); <br/> textview. setbackgroundcolor (0 xffffffff); <br/> textview. settextcolor (0xff0000ff); <br/> textview. settextsize (20); <br/> textview. settext ("click" send "to send the custom string to 10086"); <br/> textview. setgravity (gravity. center); <br/> linearlay. addview (textview); <br/> button btnsend = new button (this); <br/> // linearlayout. layoutparams btnparams = new linearlayout. layoutparams (<br/> // linearlayout. layoutparams. Fill_parent, <br/> // linearlayout. layoutparams. wrap_content); <br/> btnsend. settext ("send"); <br/> btnsend. setonclicklistener (New button. onclicklistener () {<br/> Public void onclick (view v) {<br/> servicecenteraddresstext. settext ("waiting to send text message... "); <br/> sendsms (); <br/>}< br/>}); <br/> linearlay. addview (btnsend); <br/> servicecenteraddresstext = new textview (this); <br/> servicecenteraddresstext. settext ("in progress Wait for the text message to be sent... "); <br/> servicecenteraddresstext. setbackgroundcolor (0 xffffffff); <br/> servicecenteraddresstext. settextcolor (0xff0000ff); <br/> servicecenteraddresstext. settextsize (20); <br/> servicecenteraddresstext. setgravity (gravity. left); <br/> linearlay. addview (servicecenteraddresstext); <br/> setcontentview (linearlay); <br/> // register send <br/> sendreceiver = new smsreceiver (); <br/> intentfilter sendfilter = New intentfilter (action_sms_send); <br/> registerreceiver (sendreceiver, sendfilter); <br/> // register delivery <br/> deliveryreceiver = new smsreceiver (); <br/> intentfilter deliveryfilter = new intentfilter (action_sms_delivery); <br/> registerreceiver (deliveryreceiver, deliveryfilter ); <br/> // register and receive downstream referers <br/> smsreceiver = new smsreceiver (); <br/> intentfilter receiverfilter = new intentfilter (action_sm S_receiver); <br/> registerreceiver (smsreceiver, receiverfilter); <br/>}< br/> protected void onpause () {<br/> unregisterreceiver (sendreceiver ); <br/> unregisterreceiver (deliveryreceiver); <br/> unregisterreceiver (smsreceiver); <br/>}< br/> private void sendsms () {<br/> string smsbody = "lab. sodino. SMS. test "; <br/> string smsaddress =" 10086 "; <br/> smsmanager smsmag = smsmanager. getdefault (); <br/> inten T sendintent = new intent (action_sms_send); <br/> pendingintent sendpi = pendingintent. getbroadcast (this, 0, sendintent, <br/> 0); <br/> intent deliveryintent = new intent (action_sms_delivery); <br/> pendingintent deliverypi = pendingintent. getbroadcast (this, 0, <br/> deliveryintent, 0); <br/> smsmag. sendtextmessage (smsaddress, null, smsbody, sendpi, deliverypi); <br/>}< br/> public class smsreceiver ext Ends broadcastreceiver {<br/> Public void onreceive (context, intent) {<br/> string actionname = intent. getaction (); <br/> int resultcode = getresultcode (); <br/> If (actionname. equals (action_sms_send) {<br/> switch (resultcode) {<br/> case activity. result_ OK: <br/> servicecenteraddresstext <br/>. append ("/n [send] SMS send: successed! "); <Br/> break; <br/> case smsmanager. result_error_generic_failure: <br/> servicecenteraddresstext <br/>. append ("/n [send] SMS send: result_error_generic_failure! "); <Br/> break; <br/> case smsmanager. result_error_no_service: <br/> servicecenteraddresstext <br/>. append ("/n [send] SMS send: result_error_no_service! "); <Br/> break; <br/> case smsmanager. result_error_null_pdu: <br/> servicecenteraddresstext <br/>. append ("/n [send] SMS send: result_error_null_pdu! "); <Br/> break; <br/> case smsmanager. result_error_radio_off: <br/> break; <br/>}< br/>} else if (actionname. equals (action_sms_delivery) {<br/> switch (resultcode) {<br/> case activity. result_ OK: <br/> servicecenteraddresstext <br/>. append ("/n [delivery] SMS delivery: successed! "); <Br/> break; <br/> case smsmanager. result_error_generic_failure: <br/> servicecenteraddresstext <br/>. append ("/n [delivery] SMS delivery: result_error_generic_failure! "); <Br/> break; <br/> case smsmanager. result_error_no_service: <br/> servicecenteraddresstext <br/>. append ("/n [delivery] SMS delivery: result_error_no_service! "); <Br/> break; <br/> case smsmanager. result_error_null_pdu: <br/> servicecenteraddresstext <br/>. append ("/n [delivery] SMS delivery: result_error_null_pdu! "); <Br/> break; <br/> case smsmanager. result_error_radio_off: <br/> servicecenteraddresstext <br/>. append ("/n [delivery] SMS delivery: result_error_radio_off! "); <Br/> break; <br/>}< br/> servicecenteraddresstext. append ("/n waiting for downstream SMS... "); <br/>} else if (actionname. equals (action_sms_receiver) {<br/> system. out. println ("[sodino] result =" + resultcode); <br/> bundle = intent. getextras (); <br/> If (bundle! = NULL) {<br/> object [] myobjpdus = (object []) bundle. get ("PDUS"); <br/> smsmessage [] messages = new smsmessage [myobjpdus. length]; <br/> for (INT I = 0; I <myobjpdus. length; I ++) {<br/> messages [I] = smsmessage <br/>. createfrompdu (byte []) myobjpdus [I]); <br/>}< br/> smsmessage message = messages [0]; <br/> servicecenteraddresstext. append ("/n SMS service center number:" <br/> + message. getservicecenteraddress (); <br/>}< br/>}

 

 

Add the following permissions to androidmanifest. xml:

 

<Uses-Permission Android: Name = "android. permission. send_sms "> </uses-Permission> <br/> <uses-Permission Android: Name =" android. permission. receive_sms "> </uses-Permission>

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.