zoukankan      html  css  js  c++  java
  • 解决调试Alarm源码时出现BadParcelableException异常

    最近看4.0的DeskClock源码,看了几天以后想使用它的源码写一个定时开启飞行模式的程序,歇了两天最后运行程序的时候发现,当执行updateNotification()方法的时候程序报了android.os.BadParcelableException: ClassNotFoundException when unmarshalling : com....的异常。看了很多帖子,都不能解决我的问题,源码中Alarm.java实现了Parcelable接口,代码绝对不会写错的,而且我也去API文档中确认没有写错。

    最后发现,Logcat中的出错信息中没有我定义的包名,双击错误信息却跳到了程序的AlarmReceiver.java中,这说明系统认为是我的AlarmReceiver.java在unmarshall Alarm对象的时候出错了。

    在AndroidManifest.xml中AlarmReceiver的IntentFilter定义是:

    <intent-filter>
    <action android:name="com.android.deskclock.ALARM_ALERT" />
    <action android:name="alarm_killed" />
    </intent-filter>

    而<action android:name="alarm_killed" />这个action同样会触发系统中的Clock程序,因为系统的Clock程序的AlarmReceiver同样可以接受这个Action。因此,我们只需要改一下这一个intent-filter就行,比如改为:

    <intent-filter>
    <action android:name="com.lefter.alarm.ALARM_ALERT" />
    <action android:name="com.lefter.alarm.ALARM_KILLED" />

    </intent-filter>

    发送Intent的时候Action定义为"com.lefter.alarm.ALARM_KILLED",这样的话,就只有我们自己的AlarmReceiver可以对这个Action进行处理了。从而避免了系统的Clock与我们的程序产生冲突了。

  • 相关阅读:
    poj 2996 模拟
    poj 2965 BFS
    poj 1068 模拟
    poj 3295 前缀表达式求值
    常用的十七大学术搜索引擎
    Why,Unix or Linux ?
    匈牙利命名法
    微调控件(CSpinButtonCtrl)
    美国免费邮箱
    ASP常用的代码
  • 原文地址:https://www.cnblogs.com/Lefter/p/2640634.html
Copyright © 2011-2022 走看看