2016-01-27 92 views
0

我想执行一些任务,当我得到ACTION_BOOT_COMPLETED意图,我使用下面的代码来检查设备是否插好,但我得到方法是未定义的类型BootReceiverregisterReceiver 。谁能找到解决方案?这是我正在做的。安卓:如何使用registerReceiver在广播接收器

public class BootReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(final Context context, Intent intent) { 

    if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) { 

    if(isCharging()) 
    doSomething(); //something to perform after boot if plugged in 

     } 



     public boolean isCharging() { 
    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
    Intent batteryStatus = registerReceiver(null, filter); //getting error here 

    boolean strState; 

    int chargeState = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 

    switch (chargeState) { 
     case BatteryManager.BATTERY_STATUS_CHARGING: 
     case BatteryManager.BATTERY_STATUS_FULL: 
      strState = true; 
      break; 
     default: 
      strState = false; 
    } 
    return strState; 

    } 

} 

回答

2

请致电registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED))。这将返回一个Intent,其中包含BatteryManager上定义的附加信息,以便让您知道它是否已插入。

这是可行的,因为Intent.ACTION_BATTERY_CHANGED是一个粘性广播。

回答Check if device is plugged in人选择了CommonsWare

UPDATE: 请致电context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));这种方法在

+0

我已经在使用它,再次检查有问题的代码上下文中定义,我得到同样的错误 – user5845271

+0

请看更新的答案 –

+0

我很愚蠢,谢谢我用'context.registerReceiver(null,filter)调用它。 ',它做到了。 – user5845271