我正在尝试检查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?这是因为某种程度上另一个应用程序持有系统资源,或者我的应用程序中的另一个线程当时访问了同一个资源?
由于 射线
答案 0 :(得分:8)
只是想知道在什么情况下context.registerReceiver可能会返回null?
如果从未播放null
,则会返回Intent
。在这种特定情况下,它可能表示没有电池的设备(例如,Google TV / Android TV,OUYA)因此跳过发送广播。或者它可能表明设备上的固件有点破损(例如,有缺陷的ROM mod,设备制造商的工程搞砸)。
是不是因为某个应用程序以某种方式持有系统资源,或者我的应用程序中的另一个线程当时访问了同一个资源?
不,那些应该不是问题。