博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
发送短信
阅读量:7239 次
发布时间:2019-06-29

本文共 3344 字,大约阅读时间需要 11 分钟。

SMSActivity.java

package src.sms;

import android.app.Activity;

import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SMSActivity extends Activity {

private String m_currentTelNumber;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//设置短信UI
//设置拨号按钮的事件监听器
Button smsButton = (Button) findViewById(R.id.smsButton);
smsButton.setOnClickListener(new SmsButtonListener());
}
/**
* 使用SmsMessage来发送短信
*/
private class SmsButtonListener implements OnClickListener{

@Override

public void onClick(View v) {
m_currentTelNumber = "09xxxxxxxxxxx";
EditText messageBody = (EditText) findViewById(R.id.sms_message);
//调用一个短信管理器
SmsManager smsManager = SmsManager.getDefault();
//使用短信管理传送信息
smsManager.sendTextMessage(m_currentTelNumber, null, messageBody.getText().toString(), null, null);
//调用一个Toast信息确定函数有被执行
String toastMessage = String.format("To:%1$s\nMessage Body:%2$s", m_currentTelNumber,messageBody.getText().toString());
Toast.makeText(SMSActivity.this, toastMessage, Toast.LENGTH_LONG).show();
}
}
}

 

广播机制,监控短信接收

SmsReceiver.java

package src.sms.receiver;

import android.content.BroadcastReceiver;

import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.widget.Toast;

/**

* 监控短信接收 SmsReceiver实现BroadcastReceiver,
* 当Android系统广播SMS_RECEIVED时就接收,并产生一个信息确认有接收到
*/
public class SmsReceiver extends BroadcastReceiver {
// 设置ACTION字符串来比对intent是否为接收短信
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";

@Override

public void onReceive(Context context, Intent intent) {
// 只有属于接收短信的内容才需要处理
if (intent != null && intent.getAction() != null
&& (ACTION.compareToIgnoreCase(intent.getAction()) == 0)) {
// 从Intent 中读取pdu的资料
Object[] pduData = (Object[]) intent.getExtras().get("pdus");
// 依照pduData的数组大小来添加一个短信的数组
SmsMessage[] smsArray = new SmsMessage[pduData.length];
// 将数据写入短信数组并且列出内容
for (int i = 0; i < pduData.length; i++) {
smsArray[i] = SmsMessage.createFromPdu((byte[]) pduData[i]);
String toastMessage = String
.format("Message clip #%3$d, \n From : %2$s, \n Message Body: %1$s",
smsArray[i].getMessageBody(),
smsArray[i].getOriginatingAddress(),
i);
Toast.makeText(context, toastMessage, Toast.LENGTH_LONG).show();
}
}
}
}

 

注册广播机制和添加权限

AndroidManifest.xml

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="src.sms"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

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

<application

android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".SMSActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>
</activity>
<receiver android:name=".receiver.SmsReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>

</manifest>

转载地址:http://fugfm.baihongyu.com/

你可能感兴趣的文章
Linux时间子系统(十五) clocksource
查看>>
BaseRecyclerViewAdapterHelper使用
查看>>
请说出三种减少页面加载时间的方法。
查看>>
HDU 2036 改革春风吹满地
查看>>
Deepin-快捷方式设置
查看>>
管理Java垃圾回收的五个建议
查看>>
【MySQL】MySQL的索引
查看>>
数数字
查看>>
配置阿里云Docker镜像加速仓库
查看>>
社交的基本逻辑
查看>>
DBSCAN
查看>>
Maven 使用 二——nexus
查看>>
解决maven的依赖总是无法下载完成
查看>>
【Python3 爬虫】15_Fiddler抓包分析
查看>>
【备忘】EntityFramework 6 升级到 EntityFrameworkCore 注意点
查看>>
xilinx uboot网卡驱动分析
查看>>
Spring Boot系列之配置日志输出等级
查看>>
Java 底层机制(JVM/堆/栈/方法区/GC/类加载)
查看>>
原 在windows上创建文件名以“.”开头的文件
查看>>
实时流处理Storm、Spark Streaming、Samza、Flink孰优孰劣
查看>>