您的位置:首页 > 移动开发 > Android开发

android中如何发送短信、接收短信

2016-01-22 21:13 627 查看
创建一个新工程LearnSendSMS
发短信部分代码
在androidManifest.xml中添加发送短信的权限代码

<uses-permissionandroid:name="android.permission.WRITE_SMS"/>

<uses-permissionandroid:name="android.permission.SEND_SMS"/>


Activity_main.xml代码如下:
<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"

android:layout_height="match_parent"android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:background="#ffcecbff"

android:orientation="vertical"

android:paddingBottom="@dimen/activity_vertical_margin"tools:context=".MainActivity">

<TextView

android:id="@+id/textView"

android:text="写一个新消息"

android:layout_gravity="center_horizontal"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<TextView

android:id="@+id/textViewPhoneNumber"

android:text="电话号码"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<EditText

android:id="@+id/editTextPhoneNo"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="phone"

android:hint="输入电话号码如:13959556666"/>

<TextView

android:id="@+id/textViewMessage"

android:text="短信内容"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<EditText

android:id="@+id/editTextSMS"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="textMultiLine"

android:hint="请输入要发送的短信内容"

android:text="测试发送的短信内容"/>

<Button

android:layout_gravity="center_horizontal"

android:id="@+id/btnSendSMS"

android:text="发送"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

</LinearLayout>


MainActivity.java的代码

packagecom.czg.com.learnsendsms;

importandroid.support.v7.app.AppCompatActivity;

importandroid.os.Bundle;

importandroid.telephony.SmsManager;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.Toast;

publicclassMainActivityextendsAppCompatActivity{

ButtonsendSmsBtn;

EditTexttoPhoneNumber;

EditTextsmsMessageET;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

sendSmsBtn=(Button)findViewById(R.id.btnSendSMS);

toPhoneNumber=(EditText)findViewById(R.id.editTextPhoneNo);

smsMessageET=(EditText)findViewById(R.id.editTextSMS);

sendSmsBtn.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

sendSms();

}

});

}

privatevoidsendSms(){

StringtoPhone=toPhoneNumber.getText().toString();

StringsmsMessage=smsMessageET.getText().toString();

try{

SmsManagersmsManager=SmsManager.getDefault();

smsManager.sendTextMessage(toPhone,null,smsMessage,null,null);

Toast.makeText(this,"短信已发送",Toast.LENGTH_LONG).show();

}catch(Exceptione){

e.printStackTrace();

}

}

}


收短信部分代码
创建一个SmsBroadcastReceiver广播接收器用于接收系统发出收到短信的广播

SmsBroadcastReceiver.java

packagecom.czg.com.learnsendsms;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.telephony.SmsMessage;

importandroid.widget.Toast;

importjava.text.SimpleDateFormat;

importjava.util.Date;

/**

*CreatedbyAdministratoron2016/1/22.

*/

publicclassSmsBroadcastReceiverextendsBroadcastReceiver{

publicstaticfinalStringSMS_BUNDLE="pdus";

@Override

publicvoidonReceive(Contextcontext,Intentintent){

BundleintentExtras=intent.getExtras();

if(intentExtras!=null){

Object[]sms=(Object[])intentExtras.get(SMS_BUNDLE);

StringsmsMessageStr="";

for(inti=0;i<sms.length;i++){

SmsMessagesmsMessage=SmsMessage.createFromPdu((byte[])sms[i]);

StringsmsBody=smsMessage.getMessageBody().toString();

Stringaddress=smsMessage.getOriginatingAddress();

longtimeMillis=smsMessage.getTimestampMillis();

Datedate=newDate(timeMillis);

SimpleDateFormatformat=newSimpleDateFormat("dd/MM/yy");

StringdateText=format.format(date);

smsMessageStr+=address+"at"+"\t"+dateText+"\n";

smsMessageStr+=smsBody+"\n";

}

Toast.makeText(context,smsMessageStr,Toast.LENGTH_SHORT).show();

}

}

}


在androidManifest.xml中添加收短信的权限代码

<uses-permissionandroid:name="android.permission.READ_SMS"/>

<uses-permissionandroid:name="android.permission.RECEIVE_SMS"/>


在androidManifest.xml中注册广播接收器

<receiverandroid:name=".SmsBroadcastReceiver"

android:exported="true"
>

<intent-filterandroid:priority="998">

<actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/>

</intent-filter>

</receiver>


源码下载:https://yunpan.cn/crxPCNjHsDY6G访问密码28ec



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: