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

android开发

开发平台:

Java

  1. package irdc.EX05_02;
  2. import android.app.Activity; 
  3. import android.content.Intent; 
  4. /*引用Uri类才能使用Uri.parse()*/
  5. import android.net.Uri; 
  6. import android.os.Bundle; 
  7. import android.view.View; 
  8. /*引用 widget.Button才能声明使用Button对象*/
  9. import android.widget.Button; 
  10. import android.widget.Toast;
  11. /*引用 widget.EditText才能声明使用EditText对象*/
  12. import android.widget.EditText; 
  13. /*引用 java.util.regex才能使用Regular Expression*/
  14. import java.util.regex.Matcher;
  15. import java.util.regex.Pattern;
  16. public class EX05_02 extends Activity 
  17.  /*声明Button与EditText对象名称*/
  18.   private Button mButton1; 
  19.   private EditText mEditText1; 
  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.     /*通过findViewById构造器来构造EditText与Button对象*/
  29.     mEditText1 = (EditText) findViewById(R.id.myEditText1);
  30.     mButton1 = (Button) findViewById(R.id.myButton1); 
  31.     /*设置Button对象的OnClickListener来聆听OnClick事件*/
  32.     mButton1.setOnClickListener(new Button.OnClickListener()
  33.     {
  34.       @Override 
  35.       public void onClick(View v) 
  36.       {
  37.         try 
  38.         { 
  39.           /*取得EditText中用户输入的字符串*/
  40.           String strInput = mEditText1.getText().toString();
  41.           if (isPhoneNumberValid(strInput)==true)
  42.           {
  43.             /*建构一个新的Intent
  44.             运行action.CALL的常数与通过Uri将字符串带入*/
  45.             Intent myIntentDial = new  
  46.             Intent
  47.             (
  48.               "android.intent.action.CALL",
  49.               Uri.parse("tel:"+strInput)
  50.             );
  51.             /*在startActivity()方法中
  52.             带入自定义的Intent对象以运行拨打电话的工作 */
  53.             startActivity(myIntentDial);
  54.             mEditText1.setText("");
  55.           }
  56.           else
  57.           {
  58.             mEditText1.setText("");
  59.             Toast.makeText(
  60.             EX05_02.this, "输入的电话格式不符",
  61.             Toast.LENGTH_LONG).show();
  62.           }
  63.         } 
  64.         catch(Exception e)
  65.         { 
  66.           e.printStackTrace();
  67.         }
  68.       }
  69.     });
  70.   }
  71.   /*检查字符串是否为电话号码的方法,并返回true or false的判断值*/
  72.   public static boolean isPhoneNumberValid(String phoneNumber)
  73.   {
  74.     boolean isValid = false;
  75.     /* 可接受的电话格式有:
  76.      * ^\(? : 可以使用 "(" 作为开头
  77.      * (\d{3}): 紧接着三个数字
  78.      * \)? : 可以使用")"接续
  79.      * [- ]? : 在上述格式后可以使用具选择性的 "-".
  80.      * (\d{4}) : 再紧接着三个数字
  81.      * [- ]? : 可以使用具选择性的 "-" 接续.
  82.      * (\d{4})$: 以四个数字结束.
  83.      * 可以比较下列数字格式:
  84.      * (123)456-78900, 123-4560-7890, 12345678900, (123)-4560-7890  
  85.     */
  86.     String expression = "^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{5})$";
  87.     String expression2 ="^\(?(\d{3})\)?[- ]?(\d{4})[- ]?(\d{4})$";
  88.     CharSequence inputStr = phoneNumber;
  89.     /*创建Pattern*/
  90.     Pattern pattern = Pattern.compile(expression);
  91.     /*将Pattern 以参数传入Matcher作Regular expression*/
  92.     Matcher matcher = pattern.matcher(inputStr);
  93.     /*创建Pattern2*/
  94.     Pattern pattern2 =Pattern.compile(expression2);
  95.     /*将Pattern2 以参数传入Matcher2作Regular expression*/
  96.     Matcher matcher2= pattern2.matcher(inputStr);
  97.     if(matcher.matches()||matcher2.matches())
  98.     {
  99.       isValid = true;
  100.     }
  101.     return isValid; 
  102.   }
  103. }