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"/>