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