Android 在桌面显示对话框
来源:互联网 发布:移动硬盘格式化后数据恢复 编辑:程序博客网 时间:2024/05/21 04:02
项目地址 https://github.com/OOCZC/Android_SpamMess
需求:当来新短信时,即便在桌面或其他App界面时,也能弹出对话框。
思路:App接收短信广播,然后在BroadcastReceiver的onReceive中用intent打开主题为对话框的Activity。
先实现接收短信广播:
在AndroidManifest.xml中添加权限,注册广播,注册新Activity为对话框主题。
<uses-permission android:name="android.permission.RECEIVE_SMS" /><receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter></receiver><activity android:name=".Dialog_Activity" android:theme="@style/Theme.AppCompat.Dialog"/>
在广播的onReceive中启动Dialog_Activity
MyReceiver.java (extend BroadcastReceiver)
Intent intent1 = new Intent(); intent1.setClass(context,Dialog_Activity.class); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 设置为Intent.FLAG_ACTIVITY_NEW_TASK,必要 intent1.putExtra("number", "" + msg.getOriginatingAddress()); intent1.putExtra("body", "" + msg.getDisplayMessageBody()); this.abortBroadcast(); //结束此广播,不再继续传给其他App context.startActivity(intent1);
附:接收新短信,用于启动Activity的广播MyReceiver
public class MyReceiver extends BroadcastReceiver {public void onReceive(Context context, Intent intent) { // an Intent broadcast. Bundle bundle = intent.getExtras(); SmsMessage msg = null; if (null != bundle) { Object[] smsObj = (Object[]) bundle.get("pdus"); for (Object object : smsObj) { msg = SmsMessage.createFromPdu((byte[]) object); Date date = new Date(msg.getTimestampMillis());//时间 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String receiveTime = format.format(date); System.out.println("number:" + msg.getOriginatingAddress() + " body:" + msg.getDisplayMessageBody() + " time:" + msg.getTimestampMillis()); } } Intent intent1 = new Intent(); intent1.setClass(context,Dialog_Activity.class); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent1.putExtra("number", "" + msg.getOriginatingAddress()); intent1.putExtra("body", "" + msg.getDisplayMessageBody()); this.abortBroadcast(); context.startActivity(intent1);}}
0 0
- Android 在桌面显示对话框
- Android 在桌面主界面显示对话框
- Android 在桌面主界面显示对话框
- MFC 让对话框不显示在任务栏和桌面
- 显示Android系统桌面
- Android app图标在手机桌面显示过小
- bmp在对话框显示
- 在对话框显示图标
- 对话框程序,点显示桌面按钮,在恢复对话框,多次重复有内存泄露。对话框再弹出会消耗一些内存,是正常现象
- Android菜鸟在成长-对话框显示列表项
- 在winlogon桌面显示窗口
- MFC 在桌面显示文字
- MainWindow显示在桌面中间
- JFrame在桌面居中显示
- android对话框的显示
- 在任务栏显示“显示桌面”图标
- 在一个对话框中显示另一个对话框
- android桌面显示图标修改.
- 拓扑排序(Topological Sorting)
- FFmpeg学习—android 利用ffmpeg 集成libfdk-aac 录制aac 音频文件
- 动态规划----背包问题
- Caffe学习:绘制loss和accuracy曲线(使用caffe工具包)
- LVM的工作原理和优缺点
- Android 在桌面显示对话框
- 线性表的顺序存储和链式存储
- HDU5492-Find a path
- Cortex-M的M0,M+,M3,M4,M7几种内核的简单区别
- mac上忘记mysql密码完美解决方案
- 数据结构之链表(C/C++)
- Linux中more和less命令用法
- 前端面试题:从url到页面展现,这之中发生了什么?
- 剑指offer-47.求1+2+3+...+n