Android Intent.getAction()抛出Null+;安卓

Android Intent.getAction()抛出Null+;安卓,android,Android,我已经为报警应用程序编写了广播接收器。在onReceive方法中,我正在读取Intent.getAction()它在所有版本*中都运行良好,SDK版本1.5除外,在SDK版本1.5中,它抛出空指针异常*。我正在调用broadcastReceiver的另一个活动中设置操作。请帮我解决这个问题。下面是receiver和activity类的代码段 ProfileActivity.java AlarmReceiver.java 在得到错误后,我尝试在.manifest文件中给出操作。但是没有用 请帮帮

我已经为报警应用程序编写了广播接收器。在onReceive方法中,我正在读取Intent.getAction()它在所有版本*中都运行良好,SDK版本1.5除外,在SDK版本1.5中,它抛出空指针异常*。我正在调用broadcastReceiver的另一个活动中设置操作。请帮我解决这个问题。下面是receiver和activity类的代码段

ProfileActivity.java


AlarmReceiver.java 在得到错误后,我尝试在.manifest文件中给出操作。但是没有用

请帮帮我


谢谢。

来自BroadcastReceiver.onReceive()的文档

registerReceiver(BroadcastReceiver,IntentFilter)和应用程序清单中使用的意图过滤器不保证是独占的

因此,onReceive()实现应该只响应已知的操作,忽略它们可能接收到的任何意外意图

我不完全理解上述任何一条语句的含义,但似乎第二条是应该编写一个
onReceive()
处理程序来处理意外情况

请记住,意图不需要有关联的“动作”(它们可以简单地用于在不同实体之间传递数据)<如果意图没有操作集,则code>Intent.getAction()将返回null,并且尝试记录
intentAction
将调用NPE

你确定你的意图是你自己的,而不是另一个已经找到你的接收者的方式吗?我不熟悉v1.5,但它可能以一种不同的方式工作——也许不太可能,但可能


我认为简单的尝试是简单地测试intentAction,看看它是否为null,如果为null则忽略它(即,假设intent不是您自己的,则退出onReceive()处理程序)。值得一试。

继@Squonk的精彩回复之后,我在我的
broadcastReceiver
onReceive
中放置了以下代码:

if (intent != null) {
    if(intent.getAction() != null){
        Log.i(TAG, "Intent: " + intent.getAction());
    }else{
        Log.i(TAG, "Intent: !null, Action: null");
    }
}else{
    Log.i(TAG, "Intent: null");
}
我的接收器设置为每60秒启动一次,但有其他东西在叫它:

12-03 08:42:05.566 Intent: WEEKLY_CHECK
12-03 08:42:32.990 Intent: !null, Action: null
12-03 08:42:33.175 Intent: WEEKLY_CHECK
12-03 08:43:32.990 Intent: WEEKLY_CHECK
12-03 08:43:33.025 Intent: !null, Action: null
12-03 08:43:33.057 Intent: WEEKLY_CHECK
12-03 08:44:32.990 Intent: WEEKLY_CHECK
12-03 08:44:33.069 Intent: !null, Action: null
12-03 08:44:33.102 Intent: WEEKLY_CHECK

从而确认文档中所述的内容。

您确定NPE是在您声明的地方抛出的吗?应该是1行之前。似乎出于某种原因,你收到的意图是无效的?也许在那之前检查一下?但我想这不应该是真的。谢谢你的回复。是的,我确信这个错误是在intentaction上抛出的,而不是“intent”本身,因为我能够看到我通过这个接收到的intent传递的额外数据。仍在检查为什么它只失败了1.5。。。。但是没有运气-( ...
if (intent != null) {
    if(intent.getAction() != null){
        Log.i(TAG, "Intent: " + intent.getAction());
    }else{
        Log.i(TAG, "Intent: !null, Action: null");
    }
}else{
    Log.i(TAG, "Intent: null");
}
12-03 08:42:05.566 Intent: WEEKLY_CHECK
12-03 08:42:32.990 Intent: !null, Action: null
12-03 08:42:33.175 Intent: WEEKLY_CHECK
12-03 08:43:32.990 Intent: WEEKLY_CHECK
12-03 08:43:33.025 Intent: !null, Action: null
12-03 08:43:33.057 Intent: WEEKLY_CHECK
12-03 08:44:32.990 Intent: WEEKLY_CHECK
12-03 08:44:33.069 Intent: !null, Action: null
12-03 08:44:33.102 Intent: WEEKLY_CHECK