Android-短信弹窗提示

本文介绍了一个Android应用程序,实现短信到达时显示弹窗提示的效果。首先,需要获取短信相关权限,并监听系统广播,特别是ACTION_SMS_RECEIVED。接着,通过BroadcastReceiver静态注册来接收短信,启动DialogActivity展示弹窗。在Activity中,使用Theme.Dialog主题样式定制窗口样式。源代码可在指定链接下载。
摘要由CSDN通过智能技术生成

五月的第三天,这次我给大家带来的是一个关于短信弹窗提示的爱屁屁,效果如下:

              

而需要完成对系统接收短信的监听,相关全权限的获取以及监听系统广播是必须实现的两个过程。

关于权限一块,android系统关于短信的相关权限如下所示:

<!--  发送消息-->
<p><uses-permissionandroid:name="android.permission.SEND_SMS"/>
<!-- <wbr> 阅读消息-->
<uses-permissionandroid:name="android.permission.READ_SMS"/>
<!-- <wbr> 写入消息-->
<uses-permissionandroid:name="android.permission.WRITE_SMS" />
<!-- 接收消息 -->
<uses-permissionandroid:name="android.permission.RECEIVE_SMS"/></wbr></wbr></p>

而本次我们需要实现的是接收短信,所以需要打开相应的权限,其实还有一个短信回复的功能,该功能在这个Demo中我并没有实现,不过在指定部位我有代码备注,可以留给有兴趣的朋友添加相关代码进行实现,不过记得添加相关的权限。


其次是监听系统广播,广播接收需要添加Action,而系统接收短信广播发出的Action如下:

android.provider.Telephony.SMS_RECEIVED

这个Demo中我使用的是BroadcastReceiver的静态注册方式,在注册广播的时候我们给它加上这个Action即可。


完成以上两步,监控系统短信的基础条件就已经是满足了。完成了基础条件的配置,我们还需要的就是一个BroadcastReceiver用于接收系统广播并由它启动我们的窗口DialogActivity。BroadcastReceiver代码如下:

package com.mariostudio.broadcastreceiver;

import java.text.SimpleDateFormat;
import java.util.Date;

import com.mariostudio.messagewatcher.DialogActivity;

import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;

public class MessageReceiver extends BroadcastReceiver{

	private static String MESSAGE_RECEIVER = "android.provider.Telephony.SMS_RECEIVED";
	
	@SuppressLint("SimpleDateFormat") @Override
	public void onReceive(Context context, Intent intent1) {
		if(intent1.getAction().equals(MESSAGE_RECEIVER)){
			Object pdus[] = (Object[]) intent1.getExtras().get("pdus");
			for(Object object:pdus){
				byte pdu[] = (byte[]) object;
				SmsMessage message = SmsMessage.createFromPdu(pdu);
				//获取短信的内容
				String msmContent = message.getMessageBody();
				//获取短信接收时间
				Date date = new Date(message.getTimestampMillis());
				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
				String msmDate =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值