在尝试检查电源是否已连接时,context.registerReceiver返回null intent

时间:2014-05-27 18:55:06

标签: android android-intent android-service battery android-context

我正在尝试检查Android设备是否已连接电源。 以下是逻辑(基于Commonsware的stackoverflow帖子),

Intent intent = context.registerReceiver(null, new IntentFilter(
                    Intent.ACTION_BATTERY_CHANGED));
plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);

它大部分工作正常。但是,从Crashlytics报告中,在某些情况下返回的意图为null,导致应用程序崩溃。我从来没有能够在手机上重现它。只是想知道在什么条件下context.registerReceiver可能会返回null?这是因为某种程度上另一个应用程序持有系统资源,或者我的应用程序中的另一个线程当时访问了同一个资源?

由于 射线

1 个答案:

答案 0 :(得分:8)

  

只是想知道在什么情况下context.registerReceiver可能会返回null?

如果从未播放null,则会返回Intent。在这种特定情况下,它可能表示没有电池的设备(例如,Google TV / Android TV,OUYA)因此跳过发送广播。或者它可能表明设备上的固件有点破损(例如,有缺陷的ROM mod,设备制造商的工程搞砸)。

  

是不是因为某个应用程序以某种方式持有系统资源,或者我的应用程序中的另一个线程当时访问了同一个资源?

不,那些应该不是问题。