2012-10-28 5 views
0

Je travaille sur un projet androïde où je suis inscris un récepteur de radiodiffusion dans une classe qui étend BroadcastReceiver qui reçoit des intentions pour ACTION_POWER_CONNECTED, ACTION_POWER_DISCONNECTED et ACTION_SCREEN_OFF.Vérifier si l'alimentation est connecté ou non sur Android

Lorsque ces diverses intentions sont reçues, il appelle alors les fonctions d'une autre classe qui s'étend Service.

Lorsqu'il reçoit le ACTION_POWER_CONNECTED, il appelle également une fonction appelée isPowerConnected qui est supposée vérifier si l'alimentation est connectée et sinon elle active le WakeLock.

Le problème que j'ai est quand j'exécute la fonction isPowerConnected il semble fonctionner la première fois mais tous les temps, il reçoit:

android.content.ReceiverCallNotAllowedException: composants IntentReceiver ne sont pas autorisés à inscrivez-vous pour recevoir des intentions.

Je n'ai aucune idée de comment je peux résoudre ce problème. Voici le code de isPowerConnected.

public boolean isPowerConnected() 
{ 
    int pluggedIn = -1; 
    try 
    { 
     Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
     pluggedIn = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 
    } 
    catch (Exception ex) 
    { 
     Log.e("IsPowerConnected", ex.toString()); 
    } 
    return pluggedIn == BatteryManager.BATTERY_PLUGGED_AC || pluggedIn == BatteryManager.BATTERY_PLUGGED_USB; 
} 

Merci pour toute aide que vous pouvez fournir.

+0

Si l'on vous dit que vous venez de vous connecter, pourquoi voulez-vous vérifier si vous êtes à nouveau branché? Vous pouvez également vous enregistrer pour 'ACTION_POWER_DISCONNECTED' et gérer vous-même l'état –

Répondre

0

Vous ne pouvez pas enregistrer un nouveau BroadcastReceiver dans un BroadcastReceiver existant, ce que vous êtes en train de faire.

+1

Alors, comment serais-je en mesure de vérifier si l'alimentation est connectée ou non car c'est ce que je dois être en mesure de faire – Boardy

+0

récepteur, il n'y a rien qui empêcherait votre récepteur de diffusion de lancer 'IntentService' pour faire l'enregistrement qui devrait fonctionner autour de ce –

Questions connexes