Android学习——收发短信

Android学习——收发短信

1.短信基本API介绍

使用Android API类库可以自己实现收发短信的功能:
信息的发送,对mms应用程序来讲主要是在信息数据库中创建并维护一条信息记录,真正的发送过程交由底层(Frameworks层)函数来处理

2.发送短信

虽然在Android系统中已经存在发送短信的应用,但是如果我们在开发其他应用时需要集成发送短信功能,则很方便。

核心代码:
(1)SmsManager manager=SmsManager.getDefault();//获取默认的消息管理器
(2)ArrayList list=manager.divideMessage(String txt);//拆分长短信
(3)manager.sendTextMessage(String phone,null,String content,null,null);//发送短信

public void sendMessageClick(View v){
        SmsManager smsManager=SmsManager.getDefault();//获取短信管理器
        String message="地瓜,地瓜,我是土豆";
        ArrayList<String> list=smsManager.divideMessage(message);//拆分长短信
        int size=list.size();
        for (int i=0;i<size;i++){
            smsManager.sendTextMessage("(手机号码)",null,list.get(i),null,null);
        }
    }

发送短信的权限

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

3.接收短信

Android系统收到短信会发出一个有序广播,我们可以从收到的广播的intent中获得短信信息。接收该广播的Action为:Android.provider.Telephony.SMS_RECEIVED。

定义接收器

package com.example.message;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle=intent.getExtras();
        if (bundle!=null){
            Object[] objs= (Object[]) bundle.get("pdus");
            SmsMessage[] smsMessage=new SmsMessage[objs.length];
            for (int i=0;i<objs.length;i++){
                smsMessage[i]=SmsMessage.createFromPdu((byte[])objs[i]);
                String number=smsMessage[i].getDisplayOriginatingAddress();//发送方的号码
                System.out.println(number);
                String content=smsMessage[i].getDisplayMessageBody();//获取短信的内容
                System.out.println(content);
                Toast.makeText(context, number+"---"+content, Toast.LENGTH_SHORT).show();
            }
            abortBroadcast();
        }
    }
}

注册接收器

<receiver
            android:name=".SMSReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
            </intent-filter>
        </receiver>

接收短信需要设置权限:

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

猜你喜欢

转载自blog.csdn.net/UUUUUltraman/article/details/88997971
今日推荐