EX05_03.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:6k
源码类别:

android开发

开发平台:

Java

  1. package irdc.EX05_03;
  2. import android.app.Activity; 
  3. /*引用PendingIntent类才能使用getBrocast()*/
  4. import android.app.PendingIntent; 
  5. import android.content.Intent; 
  6. import android.os.Bundle;
  7. /*引用telephony.gsm.SmsManager类才能使用sendTextMessage()*/
  8. import android.telephony.gsm.SmsManager;
  9. import android.view.View; 
  10. import android.widget.Button; 
  11. import android.widget.EditText; 
  12. import android.widget.Toast;
  13. import java.util.regex.Matcher;
  14. import java.util.regex.Pattern;
  15. public class EX05_03 extends Activity  
  16.   /*声明变量一个Button与两个EditText*/
  17.   private Button mButton1; 
  18.   private EditText mEditText1; 
  19.   private EditText mEditText2; 
  20.    
  21.   /** Called when the activity is first created. */ 
  22.   @Override 
  23.   public void onCreate(Bundle savedInstanceState) 
  24.   { 
  25.     super.onCreate(savedInstanceState); 
  26.     setContentView(R.layout.main); 
  27.     
  28.     /*
  29.     * 通过findViewById构造器来建构
  30.     * EditText1,EditText2与Button对象
  31.     */
  32.     mEditText1 = (EditText) findViewById(R.id.myEditText1); 
  33.     mEditText2 = (EditText) findViewById(R.id.myEditText2); 
  34.     mButton1 = (Button) findViewById(R.id.myButton1); 
  35.     
  36.     /*将默认文字加载EditText中*/
  37.     mEditText1.setText("请输入电话号码"); 
  38.     mEditText2.setText("请输入短信内容!!"); 
  39.     
  40.     /*设置onClickListener 让用户点击EditText时做出反应*/
  41.     mEditText1.setOnClickListener(new EditText.OnClickListener()
  42.     {
  43.       public void onClick(View v)
  44.       {
  45.         /*点击EditText时清空正文*/
  46.         mEditText1.setText("");
  47.       }
  48.     }
  49.     );
  50.     
  51.     /*设置onClickListener 让用户点击EditText时做出反应*/
  52.     mEditText2.setOnClickListener(new EditText.OnClickListener()
  53.     {
  54.       public void onClick(View v)
  55.       {
  56.         /*点击EditText时清空正文*/
  57.         mEditText2.setText("");
  58.       }
  59.     }
  60.     );
  61.      
  62.     /*设置onClickListener 让用户点击Button时做出反应*/
  63.     mButton1.setOnClickListener(new Button.OnClickListener()
  64.     { 
  65.       @Override 
  66.       public void onClick(View v) 
  67.       { 
  68.         /*由EditText1取得短信收件人电话*/
  69.         String strDestAddress = mEditText1.getText().toString();
  70.         /*由EditText2取得短信文字内容*/
  71.         String strMessage = mEditText2.getText().toString(); 
  72.         /*建构一取得default instance的 SmsManager对象 */
  73.         SmsManager smsManager = SmsManager.getDefault(); 
  74.       
  75.         // TODO Auto-generated method stub 
  76.         /*检查收件人电话格式与短信字数是否超过70字符*/
  77.         if(isPhoneNumberValid(strDestAddress)==true &&
  78.            iswithin70(strMessage)==true)
  79.         {
  80.           try 
  81.           {
  82.             /*
  83.             * 两个条件都检查通过的情况下,发送短信
  84.             * 先建构一PendingIntent对象并使用getBroadcast()广播
  85.             * 将PendingIntent,电话,短信文字等参数
  86.             * 传入sendTextMessage()方法发送短信
  87.             */
  88.             PendingIntent mPI = PendingIntent.getBroadcast
  89.             (EX05_03.this, 0, new Intent(), 0);
  90.             smsManager.sendTextMessage
  91.             (strDestAddress, null, strMessage, mPI, null); 
  92.           } 
  93.           catch(Exception e) 
  94.           { 
  95.             e.printStackTrace(); 
  96.           } 
  97.           Toast.makeText
  98.           (
  99.             EX05_03.this,"送出成功!!" , 
  100.             Toast.LENGTH_SHORT
  101.           ).show();
  102.           mEditText1.setText("");
  103.           mEditText2.setText("");
  104.         }
  105.         else 
  106.         {
  107.           /* 电话格式与短信文字不符合条件时,以Toast提醒 */
  108.           if (isPhoneNumberValid(strDestAddress)==false)
  109.           { /*且字数超过70字符*/
  110.             if(iswithin70(strMessage)==false)
  111.             {
  112.               Toast.makeText
  113.               (
  114.                 EX05_03.this, 
  115.                 "电话号码格式错误+短信内容超过70字,请检查!!",
  116.                 Toast.LENGTH_SHORT
  117.               ).show();
  118.             }
  119.             else
  120.             {
  121.               Toast.makeText
  122.               (
  123.                 EX05_03.this,
  124.                 "电话号码格式错误,请检查!!" , 
  125.                 Toast.LENGTH_SHORT
  126.               ).show();
  127.             }
  128.           }
  129.           /*字数超过70字符*/
  130.           else if (iswithin70(strMessage)==false)
  131.           {
  132.             Toast.makeText
  133.             (
  134.               EX05_03.this, 
  135.               "短信内容超过70字,请删除部分内容!!",
  136.               Toast.LENGTH_SHORT
  137.             ).show();
  138.           }
  139.         }
  140.       }
  141.     }); 
  142.      
  143.   }
  144.   /*检查字符串是否为电话号码的方法,并返回true or false的判断值*/
  145.   public static boolean isPhoneNumberValid(String phoneNumber)
  146.   {
  147.     boolean isValid = false;
  148.     /* 可接受的电话格式有:
  149.      * ^\(? : 可以使用 "(" 作为开头
  150.      * (\d{3}): 紧接着三个数字
  151.      * \)? : 可以使用")"接续
  152.      * [- ]? : 在上述格式后可以使用具选择性的 "-".
  153.      * (\d{3}) : 再紧接着三个数字
  154.      * [- ]? : 可以使用具选择性的 "-" 接续.
  155.      * (\d{5})$: 以五个数字结束.
  156.      * 可以比较下列数字格式:
  157.      * (123)456-7890, 123-456-7890, 1234567890, (123)-456-7890  
  158.     */
  159.     String expression = 
  160.     "^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{5})$";
  161.     
  162.     /* 可接受的电话格式有:
  163.      * ^\(? : 可以使用 "(" 作为开头
  164.      * (\d{3}): 紧接着三个数字
  165.      * \)? : 可以使用")"接续
  166.      * [- ]? : 在上述格式后可以使用具选择性的 "-".
  167.      * (\d{4}) : 再紧接着四个数字
  168.      * [- ]? : 可以使用具选择性的 "-" 接续.
  169.      * (\d{4})$: 以四个数字结束.
  170.      * 可以比较下列数字格式:
  171.      * (02)3456-7890, 02-3456-7890, 0234567890, (02)-3456-7890  
  172.     */
  173.     String expression2=
  174.     "^\(?(\d{3})\)?[- ]?(\d{4})[- ]?(\d{4})$";
  175.     
  176.     CharSequence inputStr = phoneNumber;
  177.     /*创建Pattern*/
  178.     Pattern pattern = Pattern.compile(expression);
  179.     /*将Pattern 以参数传入Matcher作Regular expression*/ 
  180.     Matcher matcher = pattern.matcher(inputStr);
  181.     /*创建Pattern2*/
  182.     Pattern pattern2 =Pattern.compile(expression2);
  183.     /*将Pattern2 以参数传入Matcher2作Regular expression*/ 
  184.     Matcher matcher2= pattern2.matcher(inputStr);
  185.     if(matcher.matches()||matcher2.matches())
  186.     {
  187.       isValid = true;
  188.     }
  189.     return isValid; 
  190.   }
  191.   
  192.   public static boolean iswithin70(String text)
  193.   {
  194.     if (text.length()<= 70)
  195.     {
  196.       return true;
  197.     }
  198.     else
  199.     {
  200.       return false;
  201.     }
  202.   }
  203. }