补充下上一次的问题http://blog.csdn.net/fancylovejava/article/details/9862183

在做一个记事日程提醒的android软件

给每条记事设置闹钟当然是发送广播给广播接收器咯,可是问题就出现了,

我是在存了一条记事,然后给这条记事添加闹钟时间设置的时候判断一下是否为最近的时间闹铃,if  true就发送广播,

这个广播是用PendingIntent.getBroadCast发送的(这个方法里面就已经包含了sendBroadCast方法了),

而在广播接收器里面接收到了广播后启动闹铃,我使用的是手机系统默认的闹铃,

Uri mediaUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
mMediaPlayer = MediaPlayer.create(context,  mediaUri);
mMediaPlayer.setLooping(true);

获取到默认铃声,然后就start,stop控制了。。。。

然后闹铃响了,在广播接收器里启动一个activity哦,这个activity要设置成i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

否则会有错误提示,android报错蛮人性化的,根据这个错误提示我才解决的这个问题。

启动了activity之后呢,然后在这个activiyt中再发送广播给这个广播接收器咯,

Intent i = new Intent("test.notepadalarmreceiver");
Bundle bundle = new Bundle();
    bundle.putParcelable("testnote", note2);
    i.putExtra("testnotealarm", bundle);

PendingIntent pi = PendingIntent.getBroadcast(AlarmShowActivity.this, 0, i,0);

AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+d1-d2,pi);

部分代码贴出来,

可是问题又出现了,就是传过去的bundle对象,无法自动更新,广播接收器里面接收到的bundle对象里面的序列化之后的对象一直都是最开始

PendingIntent.getBroadcast(AlarmShowActivity.this, 0, i, 0);里面的数据,

google一下,找到了篇文章http://blog.csdn.net/dadoneo/article/details/8164058

里面说的bundle数据清理什么的跟我的情况很相似,

intent.setFlags(PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

他给出了这行代码,这个意思就是pendingintent更新当前的,并且只发射一次oneshot吧,

然后我贴在我项目里,运行了下,结果报错了,

java.lang.IllegalArgumentException: Can't use FLAG_RECEIVER_BOOT_UPGRADE here又一个人性化的错误提示,直接google错误提示

http://stackoverflow.com/questions/10228762/getting-java-lang-illegalargumentexception-cant-use-flag-receiver-boot-upgrad这上面得到的灵感

PendingIntent p=PendingIntent.getBroadcast(context, id, i,PendingIntent.FLAG_CANCEL_CURRENT);

按照上面的修改了下,以为大功告成了,结果还是报错了,都不懂意思。。。。。。

最终解决的是

PendingIntent pi = PendingIntent.getBroadcast(AlarmShowActivity.this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT| PendingIntent.FLAG_ONE_SHOT);

而不是在intent里面setflags这个PendingIntent.FLAG_UPDATE_CURRENT| PendingIntent.FLAG_ONE_SHOT

然后在广播接收器里面接收到的bundle数据对象确实不一样了,大功告成了,

ps:不过我还是不明白为什么我intent.getExtra()得到的bundle对象之后,bundle.clear(),intent.removeExtra()都没起作用,真心恼火啊,有人明白吗

请留言交流!!!谢谢

做一个记事闹铃的软件笔记相关推荐

  1. GUI实战|Python做一个文档图片提取软件

    大家好,本文将进一步讲解如何用Python提取PDF与Word中图片,并结合之前讲解过的GUI框架PysimpleGUI,做一个多文件图片提取软件,效果如下: 本文主要将分为以下部分讲解: PDF.W ...

  2. 《如何做一个抗压的人》读书笔记

    <如何做一个抗压的人>读书笔记 最近感觉莫名压抑,读这本书的初衷是想找到适合自己解压的方法,提升自己的抗压力.带着目的去读书总会对这本书期待太高,认为一本书可以解决现有困境,其实不然.不过 ...

  3. 教您怎么系统的认识物理机服务器(做一个软硬件都懂的软件工程师)

    今天准备写继续写织梦建站的,但是我建站的过程中出现了一点小问题,所以等到我这边全部搞定了以后,我会继续更新完整的教程的,今天教你们怎么系统的认识物理机服务器,很多人只是知道这个东西,但是很少有人去具体 ...

  4. PyQT5学习之旅 1 如何自定义控件,入门做一个上位电脑串口调试软件,全部开源。(附带源码)

    文章目录 一.前言 二.开发的必备工具 2.1 PyCharm 如何集成 QT Designer UI代码转可视化 可视转化UI代码 打包成 exe 软件: 2.2.引进自定义控件 移除此控件为自定义 ...

  5. 【C语言-数据结构与算法】-哈夫曼压缩解压缩-终局-如何做一个自己独有的压缩软件

    哈夫曼压缩&解压缩 Ⅰ 前言 Ⅱ 需求分析&主函数带参的应用 A. 需求分析 B. 压缩部分 B. 解压缩部分 Ⅲ 哈夫曼压缩 A. 代码分析 B. 从文件中读取内容生成频度表 C. ...

  6. STC12C5A56S2和DS12C887做的电子闹铃

    配件信息 控制器: STC12C5A56S2 定时芯片: DS12C887 显示: 4位0.56寸数码管 其它: 无源蜂鸣器, 三极管S9012, 电阻10K*2, 100*1, 电容30p*2, 1 ...

  7. 如何做一个软件项目经理? ----写给公司所有的开发人员

    第一部分:软件项目经理的要求 首先是一个管理者,其次熟悉某些工具,某几种语言,行业背景,项目管理技能. 软件项目经理面临的恶劣环境,我们绝大部分软件企业运行在相对混乱的状态(CMM一级),组织不大可能 ...

  8. android 定时响铃,Android 中利用广播接收器(BroadCastReceiver)来接收定时响铃的闹铃信息...

    刚开始做东西得时候很不了解android中一些组件的应用方法,找了一个闹钟的小例子来更好的理解广播的接收. 应用程序的界面是这样的,这个例子是用闹钟的制定与解除来穿插broadcast  Receiv ...

  9. Python GUI编程:制作一个文档图片提取软件

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章最早早起Python ,作者GUI工作组 私信回复"资料&quo ...

最新文章

  1. Python中函数的参数传递与可变长参数
  2. (转)测测你是否有搜索引擎依赖症
  3. 如何将git上的代码迁移到Coding上
  4. 条件 推导 迭代 并行
  5. 数据卡片_E015 如何批量汇总工作簿数据,形成独立工作簿信息卡片
  6. 2016中国国际大数据大会预热活动启航,首场沙龙聚焦精准营销
  7. Web storm 部分快捷键
  8. Oracle如何创建索引、删除索引、查询索引
  9. sql-server-storage-internals
  10. MySQL基础入门《2》创建数据库并插入数据
  11. 面试题-C++软件/客户端开发
  12. 高阶的Parser:可变运算优先级
  13. 解决Win10无操作两分钟进入睡眠问题
  14. ecshop小京东后台首次上传商品不能上传相册的解决办法
  15. mysql user导出权限_mysql快速导出user权限
  16. mysql登录框万能密码_Sqli-LABS通关笔录-11[sql注入之万能密码以及登录框报错注入]...
  17. C语言实现通讯录(静态版本+动态版本)
  18. 无公网IP,VB应用从外网访问内网服务器
  19. JAVA 好玩程序之星星图案
  20. EdgeConnect: Generative lmage lnpainting with Adversarial Edge Learning 代码测试教程

热门文章

  1. 核电池:一切电池的终极形态
  2. 最先进的微型计算机,获得《微型计算机》称赞,GPD P2 MAX堪称对便携本的终极追求...
  3. 素数与素性测试【Matrix67】
  4. Halcon深度学习1 -- 环境搭建及准备工作-halcon18版本下载安装
  5. SQL——条件判断语句
  6. vue3.x 项目使用element-plus 自动按需导入 使用v-loading报错 无法找到样式 element-plus/es/components/loading-directive/sty
  7. Android studio 40 播放网络歌曲
  8. 主动降噪蓝牙耳机怎么选才不踩雷?推荐这五款高性价比蓝牙耳机
  9. SOLIDWORKS如何画正四面体
  10. MySQL重装后导入旧数据