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


创建一个新工程LearnSendSMS

发短信部分代码

androidManifest.xml中添加发送短信的权限代码

 

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

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

 

Activity_main.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>

  <LinearLayout xmlns: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的代码
package com.czg.com.learnsendsms;

  

  import android.support.v7.app.AppCompatActivity;

  import android.os.Bundle;

  import android.telephony.SmsManager;

  import android.view.View;

  import android.widget.Button;

  import android.widget.EditText;

  import android.widget.Toast;

  

  public class MainActivity extends AppCompatActivity {

    Button sendSmsBtn;

    EditText toPhoneNumber;

    EditText smsMessageET;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        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(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                sendSms();

            }

        });

    }

    private void sendSms() {

        String toPhone = toPhoneNumber.getText().toString();

        String smsMessage = smsMessageET.getText().toString();

  

        try {

            SmsManager smsManager = SmsManager.getDefault();

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

  

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

        } catch (Exception e) {

            e.printStackTrace();

        }

  

    }

}
 

收短信部分代码

创建一个SmsBroadcastReceiver广播接收器用于接收系统发出收到短信的广播
SmsBroadcastReceiver.java
package com.czg.com.learnsendsms;

  

  import android.content.BroadcastReceiver;

  import android.content.Context;

  import android.content.Intent;

  import android.os.Bundle;

  import android.telephony.SmsMessage;

  import android.widget.Toast;

  

  import java.text.SimpleDateFormat;

  import java.util.Date;

  

  /**

 * Created by Administrator on 2016/1/22.

 */

  public class SmsBroadcastReceiver extends BroadcastReceiver {

  

    public static final String SMS_BUNDLE = "pdus";

  

    @Override

    public void onReceive(Context context, Intent intent) {

        Bundle intentExtras = intent.getExtras();

  

        if(intentExtras != null) {

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

            String smsMessageStr = "";

  

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

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

  

                String smsBody = smsMessage.getMessageBody().toString();

                String address = smsMessage.getOriginatingAddress();

                long timeMillis = smsMessage.getTimestampMillis();

  

                Date date = new Date(timeMillis);

                SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy");

                String dateText = format.format(date);

  

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

                smsMessageStr += smsBody + "\n";

            }

  

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

  

  

        }

    }

}
 

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

 

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

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

 

androidManifest.xml中注册广播接收器

 

<receiver android:name=".SmsBroadcastReceiver"

    android:exported="true" >

  

    <intent-filter android:priority="998" >

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

    </intent-filter>

</receiver>

 

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



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牵手生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值