2010-08-13 13 views
7

Tengo un problema. Estoy tratando de hacer que un receptor de transmisión adquiera un bloqueo de activación para que mi alarma active el teléfono desde el modo de suspensión.Problema al adquirir el bloqueo de activación del receptor de difusión

En el receptor de radiodifusión más adelante, el programa se bloquea con el "origen no encontrado" en la línea "sCpuWakeLock.acquire(); cuando la clase 'AlarmAlertWakeLock' es llamado por AlarmReceiver Alguna idea de lo que está pasando ¿Hay una mejor.? manera de hacer lo que estoy tratando de hacer

En un archivo:?

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class AlarmReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(final Context context, Intent intent) { 
     AlarmAlertWakeLock.acquireCpuWakeLock(context); 

    }  
} 

en un archivo separado:

import android.content.Context; 
import android.os.PowerManager; 

public class AlarmAlertWakeLock { 

    private static PowerManager.WakeLock sCpuWakeLock; 

    static void acquireCpuWakeLock(Context context) { 

     if (sCpuWakeLock != null) { 
      return; 
     } 
     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 


     sCpuWakeLock = pm.newWakeLock(
       PowerManager.PARTIAL_WAKE_LOCK | 
       PowerManager.ACQUIRE_CAUSES_WAKEUP,"okTag"); 
     sCpuWakeLock.acquire(); 
    } 

    static void releaseCpuLock() { 
     if (sCpuWakeLock != null) { 
      sCpuWakeLock.release(); 
      sCpuWakeLock = null; 
     } 
    } 
} 

Respuesta

4

No importa, lo he descubierto - que necesitaba para agregar el permiso de bloqueo estela al manifiesto:

utiliza permiso-android: name = "android.permission.WAKE_LOCK"

funciona bien ahora!

Cuestiones relacionadas