android 發送短信 判斷號碼規則 判斷字符數70
public class duan extends Activity { /*聲明變量一個Button與兩個EditText*/ private Button mButton1; private EditText mEditText1; private EditText mEditText2; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* * 通過findViewById構造器來建構 * EditText1,EditText2與Button對象 */ mEditText1 = (EditText) findViewById(R.id.myEditText1); mEditText2 = (EditText) findViewById(R.id.myEditText2); mButton1 = (Button) findViewById(R.id.myButton1); /*將默認文字加載EditText中*/ mEditText1.setText("請輸入號碼"); mEditText2.setText("請輸入內容!!"); /*設置onClickListener 讓用戶點擊EditText時做出反應*/ mEditText1.setOnClickListener(new EditText.OnClickListener() { public void onClick(View v) { /*點擊EditText時清空正文*/ mEditText1.setText(""); } } ); /*設置onClickListener 讓用戶點擊EditText時做出反應*/ mEditText2.setOnClickListener(new EditText.OnClickListener() { public void onClick(View v) { /*點擊EditText時清空正文*/ mEditText2.setText(""); } } ); /*設置onClickListener 讓用戶點擊Button時做出反應*/ mButton1.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { /*由EditText1取得短信收件人電話*/ String strDestAddress = mEditText1.getText().toString(); /*由EditText2取得短信文字內容*/ String strMessage = mEditText2.getText().toString(); /*建構一取得default instance的 SmsManager對象 */ SmsManager smsManager = SmsManager.getDefault(); // TODO Auto-generated method stub /*檢查收件人電話格式與短信字數是否超過70字符*/ if(isPhoneNumberValid(strDestAddress)==true && iswithin70(strMessage)==true) { try { /* * 兩個條件都檢查通過的情況下,發送短信 * 先建構一PendingIntent對象並使用getBroadcast()廣播 * 將PendingIntent,電話,短信文字等參數 * 傳入sendTextMessage()方法發送短信 */ PendingIntent mPI = PendingIntent.getBroadcast (duan.this, 0, new Intent(), 0); smsManager.sendTextMessage (strDestAddress, null, strMessage, mPI, null); } catch(Exception e) { e.printStackTrace(); } Toast.makeText ( duan.this,"送出成功!!" , Toast.LENGTH_SHORT ).show(); mEditText1.setText(""); mEditText2.setText(""); } else { /* 電話格式與短信文字不符合條件時,以Toast提醒 */ if (isPhoneNumberValid(strDestAddress)==false) { /*且字數超過70字符*/ if(iswithin70(strMessage)==false) { Toast.makeText ( duan.this, "電話號碼格式錯誤+短信內容超過70字,請檢查!!", Toast.LENGTH_SHORT ).show(); } else { Toast.makeText ( duan.this, "電話號碼格式錯誤,請檢查!!" , Toast.LENGTH_SHORT ).show(); } } /*字數超過70字符*/ else if (iswithin70(strMessage)==false) { Toast.makeText ( duan.this, "短信內容超過70字,請刪除部分內容!!", Toast.LENGTH_SHORT ).show(); } } } }); } /*檢查字符串是否為電話號碼的方法,並返回true or false的判斷值*/ public static boolean isPhoneNumberValid(String phoneNumber) { boolean isValid = false; /* 可接受的電話格式有: * ^\\(? : 可以使用 "(" 作為開頭 * (\\d{3}): 緊接著三個數字 * \\)? : 可以使用")"接續 * [- ]? : 在上述格式後可以使用具選擇性的 "-". * (\\d{3}) : 再緊接著三個數字 * [- ]? : 可以使用具選擇性的 "-" 接續. * (\\d{5})$: 以五個數字結束. * 可以比較下列數字格式: * (123)456-7890, 123-456-7890, 1234567890, (123)-456-7890 */ String expression = "^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{5})$"; /* 可接受的電話格式有: * ^\\(? : 可以使用 "(" 作為開頭 * (\\d{3}): 緊接著三個數字 * \\)? : 可以使用")"接續 * [- ]? : 在上述格式後可以使用具選擇性的 "-". * (\\d{4}) : 再緊接著四個數字 * [- ]? : 可以使用具選擇性的 "-" 接續. * (\\d{4})$: 以四個數字結束. * 可以比較下列數字格式: * (02)3456-7890, 02-3456-7890, 0234567890, (02)-3456-7890 */ String expression2= "^\\(?(\\d{3})\\)?[- ]?(\\d{4})[- ]?(\\d{4})$"; CharSequence inputStr = phoneNumber; /*創建Pattern*/ Pattern pattern = Pattern.compile(expression); /*將Pattern 以參數傳入Matcher作Regular expression*/ Matcher matcher = pattern.matcher(inputStr); /*創建Pattern2*/ Pattern pattern2 =Pattern.compile(expression2); /*將Pattern2 以參數傳入Matcher2作Regular expression*/ Matcher matcher2= pattern2.matcher(inputStr); if(matcher.matches()||matcher2.matches()) { isValid = true; } return isValid; } public static boolean iswithin70(String text) { if (text.length()<= 70) { return true; } else { return false; } } }
最後更新:2017-04-02 16:48:19