智能管家项目总结(2)
来源:互联网 发布:旋转轮胎车辆数据修改 编辑:程序博客网 时间:2024/06/06 14:16
4.监听手机收到短信
先是广播接收器
class InnerSmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { L.d("sms"); //获取短信内容返回的是一个Object数组 Object[] objs = (Object[]) intent.getExtras().get("pdus"); //遍历数组得到短信内容 for (Object obj : objs) {// 超过140字节,会分多条短信发送 //把数组元素转换成短信对象 SmsMessage sms = SmsMessage.createFromPdu((byte[]) obj); originatingAddress = sms.getOriginatingAddress(); messageBody = sms.getMessageBody(); L.i("短信号码:" + originatingAddress + ";短信内容:" + messageBody); //弹框显示 showSmsWindow(originatingAddress, messageBody); } }}
下面注册广播
// 拦截短信, 同等条件下,动态注册更优先获取广播mReceiver = new InnerSmsReceiver();IntentFilter filter = new IntentFilter();filter.addAction("android.provider.Telephony.SMS_RECEIVED");filter.setPriority(Integer.MAX_VALUE);registerReceiver(mReceiver, filter);自定义广播里有一个监听到短信后弹出一个窗口,下面代码:private void showSmsWindow(String title, String content) { //窗口管理器 wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); //布局参数 layoutParams = new WindowManager.LayoutParams(); layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.flags = //WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | 不能触摸 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; //WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 沒有焦点 //格式 layoutParams.format = PixelFormat.TRANSLUCENT; //类型 layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE; mView = (SessionLinearLayout) View.inflate(getApplicationContext(), R.layout.window_item, null); tv_title = (TextView) mView.findViewById(R.id.tv_title); tv_title.setText("发件人:" + originatingAddress); tv_content = (TextView) mView.findViewById(R.id.tv_content); tv_content.setText("短信内容:" + messageBody); btnSend = (Button) mView.findViewById(R.id.btnSend); btnSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mView.getParent() != null) { wm.removeView(mView); } //send sms Uri uri = Uri.parse("smsto:" + originatingAddress); Intent i = new Intent(Intent.ACTION_SENDTO, uri); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra("sms_baby", ""); startActivity(i); } }); wm.addView(mView, layoutParams); //监听返回键 mView.setDispatchKeyEventListener(mDispatchKeyEventListener);}
上面代码里面还有一个按键的监听,Android里面的Home,Back,Menu三个键同样使用广播进行管理。
HomeWatcherReceiver mHomeKeyReceiver;//注册Home监听广播mHomeKeyReceiver = new HomeWatcherReceiver();final IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);registerReceiver(mHomeKeyReceiver, homeFilter);//监听返回键mView.setDispatchKeyEventListener(mDispatchKeyEventListener);/** * 返回鍵监听 */private SessionLinearLayout.DispatchKeyEventListener mDispatchKeyEventListener = new SessionLinearLayout.DispatchKeyEventListener() { @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { if (mView.getParent() != null) { wm.removeView(mView); } return true; } return false; }};还有一个Home键/** * 监听Home键 */class HomeWatcherReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); if (SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)) { if (mView.getParent() != null) { wm.removeView(mView); } } } }}
后面的代码看了下,的确是基础课程,都比较简单,没什么复杂的东西,好多都是用了很多次的东西,下一篇再把零碎知识整理一下,也就完工了。哈哈 ^_^
软件github下载地址:https://github.com/SunnyGZY/SmartButler
0 0
- 智能管家项目总结(2)
- 智能管家项目总结(1)
- 智能管家项目总结(3)
- 99手机管家项目的总结
- 第一个项目(手机管家)总结
- 智能管家(一)
- 智能嘘嘘扣项目总结
- 基于DragonBoard410C的智能管家
- 唐御智能销售管家
- 智能循迹避障小车项目总结
- 电脑管家项目
- 项目 - 智能交通(2)
- 逐浪云管家(FileZilla Server智能助手)发布
- 智能自然语言交流系统项目总结
- 智能监控项目中期总结1-架构
- 各品牌机器管家功能分析总结
- 传统家电变智能 海尔“苹果团队”发布管家产品
- 基于Dragonboard 410c设计的智能管家
- 欢迎使用CSDN-markdown编辑器
- 查看.tar.gz文件内容(不需要解压)
- 数字图像处理基础-像素间的基本关系-通路
- 小白 笔记---------------------------hadoop出现hadoop2.X部署警告: Unable to load native-hadoop library 总结
- [linux]查看性能的命令(top和glance)的详解
- 智能管家项目总结(2)
- 打水问题
- oracle11g标准安装
- kerberos安装配置
- JS splice与 JQuery inArray 的结合使用
- 【tensorflow1.0学习笔记001】开篇:以实例了解tensorflow的运行与下载安装
- Android多屏幕适配-平板
- chrome 上传文件控件,选择文件时会延迟近10s
- elasticsearch 索引复制 数据