android 开发 短信,Android开发之短信发送
今天要講的是使用Android開發(fā)發(fā)送短信程序。我們先來看下運(yùn)行效果
???
圖(1)???????????????????????????????????????????????????????????????????????????????????圖(2)
圖(3)
圖(1):當(dāng)我們運(yùn)行項(xiàng)目時(shí),出現(xiàn)在屏幕的效果;
圖(2):當(dāng)我們輸入錯(cuò)誤格式的電話號碼時(shí),出現(xiàn)在屏幕的效果圖;
圖(3):當(dāng)我們輸入格式正確時(shí),短信發(fā)送成功的效果。
下面,來講解該項(xiàng)目的開發(fā)過程。
1、創(chuàng)建一個(gè)Android項(xiàng)目,這里命名為SendMessage。
2、修改程序的布局文件main.xml內(nèi)容。具體代碼如下:
android:id="@+id/widget1"
android:background="@drawable/white"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
android:id="@+id/widget27"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_textview"
android:textSize="16sp"
android:layout_x="0px"
android:layout_y="12px"
>
android:id="@+id/myEditText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:textSize="18sp"
android:layout_x="60px"
android:layout_y="2px"
>
android:id="@+id/myEditText2"
android:layout_width="fill_parent"
android:layout_height="223px"
android:text=""
android:textSize="18sp"
android:layout_x="0px"
android:layout_y="52px"
>
android:id="@+id/myButton1"
android:layout_width="162px"
android:layout_height="wrap_content"
android:text="@string/str_button1"
android:layout_x="80px"
android:layout_y="302px"
>
3、修改values目錄下的string.xml文件,并在該目錄下新建一個(gè)color.xml文件,具體代碼如下:
string.xml:
SendMessage
發(fā)送
收件人
color.xml:
#808080
#FFFFFF
#0000FF
這里說一下,為什么我們要新建color.xml文件,因?yàn)槲覀儾季治募幸玫健4蠹铱赡芤呀?jīng)發(fā)現(xiàn),我們運(yùn)行效果圖的背景顏色不是黑色而是白色,系統(tǒng)默認(rèn)情況下,背景是黑色,這里我們使用color.xml文件來修改背景顏色。
4、修改主程序,MyActivity.java,該文件的具體代碼如下:
public class MyActivity extends Activity
{
/*聲明變量一個(gè)Button與兩個(gè)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構(gòu)造器來建構(gòu)
* EditText1,EditText2與Button對象
*/
mEditText1 = (EditText) findViewById(R.id.myEditText1);
mEditText2 = (EditText) findViewById(R.id.myEditText2);
mButton1 = (Button) findViewById(R.id.myButton1);
/*將默認(rèn)文字加載EditText中*/
mEditText1.setText("請輸入號碼");
mEditText2.setText("請輸入內(nèi)容!!");
/*設(shè)置onClickListener 讓用戶點(diǎn)擊EditText時(shí)做出反應(yīng)*/
mEditText1.setOnClickListener(new EditText.OnClickListener()
{
public void onClick(View v)
{
/*點(diǎn)擊EditText時(shí)清空正文*/
mEditText1.setText("");
}
}
);
/*設(shè)置onClickListener 讓用戶點(diǎn)擊EditText時(shí)做出反應(yīng)*/
mEditText2.setOnClickListener(new EditText.OnClickListener()
{
public void onClick(View v)
{
/*點(diǎn)擊EditText時(shí)清空正文*/
mEditText2.setText("");
}
}
);
/*設(shè)置onClickListener 讓用戶點(diǎn)擊Button時(shí)做出反應(yīng)*/
mButton1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
/*由EditText1取得短信收件人電話*/
String strDestAddress = mEditText1.getText().toString();
/*由EditText2取得短信文字內(nèi)容*/
String strMessage = mEditText2.getText().toString();
/*建構(gòu)一取得default instance的 SmsManager對象 */
SmsManager smsManager = SmsManager.getDefault();
// TODO Auto-generated method stub
/*檢查收件人電話格式與短信字?jǐn)?shù)是否超過70字符*/
if(isPhoneNumberValid(strDestAddress)==true &&
iswithin70(strMessage)==true)
{
try
{
/*
* 兩個(gè)條件都檢查通過的情況下,發(fā)送短信
* 先建構(gòu)一PendingIntent對象并使用getBroadcast()廣播
* 將PendingIntent,電話,短信文字等參數(shù)
* 傳入sendTextMessage()方法發(fā)送短信
*/
PendingIntent mPI = PendingIntent.getBroadcast
(MyActivity.this, 0, new Intent(), 0);
smsManager.sendTextMessage
(strDestAddress, null, strMessage, mPI, null);
}
catch(Exception e)
{
e.printStackTrace();
}
Toast.makeText
(
MyActivity.this,"送出成功!!" ,
Toast.LENGTH_SHORT
).show();
}
else
{
/* 電話格式與短信文字不符合條件時(shí),以Toast提醒 */
if (isPhoneNumberValid(strDestAddress)==false)
{ /*且字?jǐn)?shù)超過70字符*/
if(iswithin70(strMessage)==false)
{
Toast.makeText
(
MyActivity.this,
"電話號碼格式錯(cuò)誤+短信內(nèi)容超過70字,請檢查!!",
Toast.LENGTH_SHORT
).show();
}
else
{
Toast.makeText
(
MyActivity.this,
"電話號碼格式錯(cuò)誤,請檢查!!" ,
Toast.LENGTH_SHORT
).show();
}
}
/*字?jǐn)?shù)超過70字符*/
else if (iswithin70(strMessage)==false)
{
Toast.makeText
(
MyActivity.this,
"短信內(nèi)容超過70字,請刪除部分內(nèi)容!!",
Toast.LENGTH_SHORT
).show();
}
}
}
});
}
/*檢查字符串是否為電話號碼的方法,并返回true or false的判斷值*/
public static boolean isPhoneNumberValid(String phoneNumber)
{
boolean isValid = false;
/* 可接受的電話格式有:
* ^\\(? : 可以使用 "(" 作為開頭
* (\\d{3}): 緊接著三個(gè)數(shù)字
* \\)? : 可以使用")"接續(xù)
* [- ]? : 在上述格式后可以使用具選擇性的 "-".
* (\\d{3}) : 再緊接著三個(gè)數(shù)字
* [- ]? : 可以使用具選擇性的 "-" 接續(xù).
* (\\d{5})$: 以五個(gè)數(shù)字結(jié)束.
* 可以比較下列數(shù)字格式:
* (123)456-7890, 123-456-7890, 1234567890, (123)-456-7890
*/
String expression =
"^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{5}){1}quot;;
/* 可接受的電話格式有:
* ^\\(? : 可以使用 "(" 作為開頭
* (\\d{3}): 緊接著三個(gè)數(shù)字
* \\)? : 可以使用")"接續(xù)
* [- ]? : 在上述格式后可以使用具選擇性的 "-".
* (\\d{4}) : 再緊接著四個(gè)數(shù)字
* [- ]? : 可以使用具選擇性的 "-" 接續(xù).
* (\\d{4})$: 以四個(gè)數(shù)字結(jié)束.
* 可以比較下列數(shù)字格式:
* (02)3456-7890, 02-3456-7890, 0234567890, (02)-3456-7890
*/
String expression2=
"^\\(?(\\d{3})\\)?[- ]?(\\d{4})[- ]?(\\d{4}){1}quot;;
CharSequence inputStr = phoneNumber;
/*創(chuàng)建Pattern*/
Pattern pattern = Pattern.compile(expression);
/*將Pattern 以參數(shù)傳入Matcher作Regular expression*/
Matcher matcher = pattern.matcher(inputStr);
/*創(chuàng)建Pattern2*/
Pattern pattern2 =Pattern.compile(expression2);
/*將Pattern2 以參數(shù)傳入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;
}
}
}
5、到此整個(gè)項(xiàng)目已經(jīng)開發(fā)完畢!
到此本該結(jié)束,但是考慮到一些細(xì)節(jié),有必要說下。
本項(xiàng)目的基本思想:在具體實(shí)現(xiàn)上,是通過SmsManager對象的sendTextMessage()方法來實(shí)現(xiàn)的,其中sendTextMessage()方法需要傳入5個(gè)值,依次是:收件人地址String、發(fā)送地址String、正文String、發(fā)送服務(wù)PendingIntent和送達(dá)服務(wù)PendingInten。在這里我們還詳細(xì)的定義了電話的格式,文中有詳細(xì)的說明。還約束了短信內(nèi)容的字長!
總結(jié)
以上是生活随笔為你收集整理的android 开发 短信,Android开发之短信发送的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        