基于Android4.0短信发送案例(SMS)

老规矩,先看图,再看代码。

 

 

看图吧,layout我就不写了。下面看主要代码

 

  
  
  
  
  1. public class MainActivity extends Activity implements OnClickListener{ 
  2.     private EditText phone; 
  3.     private EditText msg; 
  4.     private Button send; 
  5.     //输入的电话号码符合以下格式标准 
  6.     //private static final Pattern GLOBAL_PHONE_NUMBER_PATTERN = Pattern.compile("[\\+]?[0-9.-]+"); 
  7.     @Override 
  8.     protected void onCreate(Bundle savedInstanceState) { 
  9.         super.onCreate(savedInstanceState); 
  10.         setContentView(R.layout.activity_main); 
  11.         send = (Button) findViewById(R.id.button1); 
  12.         phone = (EditText) findViewById(R.id.phone); 
  13.         phone.setText(R.string.defaultPhone); 
  14.         phone.addTextChangedListener(new TextWatcher() { 
  15.             //当一个对象的类型是连接到一个可编辑的,它的方法被调用时,更改文本。 
  16.             @Override 
  17.             public void onTextChanged(CharSequence s, int start, int before,int count) { 
  18.                 System.out.println("onTextChanged = " + s.toString()); 
  19.             } 
  20.  
  21.             @Override 
  22.             public void beforeTextChanged(CharSequence s, int start, int count,int after) { 
  23.                 System.out.println("beforeTextChanged = " + s.toString()); 
  24.             } 
  25.  
  26.             @Override 
  27.             public void afterTextChanged(Editable s) { 
  28.                 if (isNotPhone(s.toString())) { 
  29.                     phone.setTextColor(ColorStateList.valueOf(Color.RED)); 
  30.                 } else { 
  31.                     phone.setTextColor(Color.BLACK); 
  32.                 } 
  33.             } 
  34.  
  35.         }); 
  36.         msg = (EditText) findViewById(R.id.msg); 
  37.         msg.setText(R.string.defaultMsg); 
  38.         send.setOnClickListener(this); 
  39.     } 
  40.  
  41.     public void sendSms(View view) { 
  42.         //管理短信操作,如发送数据,文本和PDU短信。由调用静态方法SmsManager.getDefault的()获取该对象。 
  43.         SmsManager smsManager = SmsManager.getDefault(); 
  44.         String phoneNumber = phone.getText().toString(); 
  45.         if (isNotPhone(phoneNumber)) { 
  46.             phone.setTextColor(ColorStateList.valueOf(Color.RED)); 
  47.             showLongMsg(R.string.wrongNumber); 
  48.             return
  49.         } 
  50.         String msgStr = msg.getText().toString(); 
  51.         if (isEmpty(msgStr)) { 
  52.             showLongMsg(R.string.msgEmpty); 
  53.             return
  54.         } 
  55.         //源码翻译说明 
  56.         //分割成几个碎块,没有大于的最大SMS消息大小的消息文本 
  57.         //个人理解意思:把发送消息的内容分割几个小块内容,然后进行字符串特别处理返回ArrayList<String>,进行遍历 
  58.         //(至于怎么特别处理,要看源码,我也只是大概的看了一下,不是很明白原理 0.0) 
  59.         for (String str : smsManager.divideMessage(msgStr)) { 
  60. //          try { 
  61. //              ISms iccISms = ISms.Stub.asInterface(ServiceManager.getService("isms")); 
  62. //              if (iccISms != null) { 
  63. //                  iccISms.sendText(destinationAddress, scAddress, text, sentIntent, deliveryIntent); 
  64. //              } 
  65. //          } catch (RemoteException ex) { 
  66. //              // ignore it 
  67. //          } 
  68.             //通过以上代码进行短信发送的.看源码找不到ISms这个类(太神奇了,表示压梨山大) 
  69.             smsManager.sendTextMessage(phoneNumber, null, str, nullnull); 
  70.         } 
  71.         showLongMsg(R.string.successInfo); 
  72.     } 
  73.  
  74.     private boolean isEmpty(String msgStr) { 
  75.         return msgStr == null || msgStr.trim().length() == 0; 
  76.     } 
  77.  
  78.     private void showLongMsg(int stringId) { 
  79.         Toast.makeText(this, stringId, Toast.LENGTH_LONG).show(); 
  80.     } 
  81.  
  82.     private boolean isNotPhone(String phoneNumber) { 
  83.         return !PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber); 
  84.     } 
  85.  
  86.     @Override 
  87.     public boolean onCreateOptionsMenu(Menu menu) { 
  88.         getMenuInflater().inflate(R.menu.activity_main, menu); 
  89.         return true
  90.     } 
  91.      
  92.      
  93.     @Override 
  94.     public boolean onOptionsItemSelected(MenuItem item) { 
  95.         switch (item.getItemId()) { 
  96.         case Menu.FIRST: 
  97.             finish(); 
  98.             break
  99.  
  100.         default
  101.             break
  102.         } 
  103.         return true
  104.     } 
  105.      
  106.     @Override 
  107.     public void onClick(View v) { 
  108.         sendSms(v); 
  109.     } 

源码以上传附件

你可能感兴趣的:(android,sms)