Nunca entra no metodo onReceive()

5 respostas
sarkozy

criei uma classe BroadcastReceiver no meu projeto android para executar uma determinada ação quando o usuario apertar o botao de ligar a tela (SCREEN_ON) e outra ação quando apagar a tela (SCREEN_OFF).

Codigo:

public class ScreenReceiver extends BroadcastReceiver
{

	public static boolean wasScreenOn = true;

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            // do whatever you need to do here
            wasScreenOn = false;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
        	// Get instance of Vibrator from current Context
			Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
			 
			// Vibrate for 300 milliseconds
			v.vibrate(1000);
                        wasScreenOn = true;
        }
    }

Manifest:

<application>

......

<receiver android:name="br.com.broadcastreceiver.ScreenReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
		    <intent-filter> 
		       	<action android:name="android.intent.action.SCREEN_ON"></action>
		       	<action android:name="android.intent.action.SCREEN_OFF"></action>
		        <category android:name="android.intent.category.DEFAULT" /> 
		    </intent-filter>
		</receiver>
		
	</application>

Mas ele nunca entra no metodo onReceive()... debuguei, e ele nunca entra la...

o q eu estou fazendo de errado?

Estou rodando o projeto no celular atraves do usb debugging.

me ajudem porfavor!

5 Respostas

felipebonezi

Tem certeza que a category é DEFAULT? :open_mouth:

sarkozy

entao kra… to meio perdido nisso…

qual category se encaixaria melhor para o q eu pretendo fazer?

felipebonezi

Me diz uma coisa, você está debugando no celular ou emulador?

Vai que o emulador ou aparelho não envia a action SCREEN_OFF quando clica no botão físico de travar a tela?

Porque você não faz ao invez de Action, por onKeyDown() ?

Já tentou?

Abraço.

sarkozy

debuguei pelo celular kra, mas tipo … rodei no celular e fiquei debugando no eclipse…

por onKeyDown() seria perfeito! mas eu nao achei um metodo de pegar o onkeydown do botao de ligar a tela :confused:

parece que nao tem como…

vc conhece alguma forma?

sarkozy

ate achei esse codigo:

public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) { // do what you want with the power button return true; } return super.onKeyDown(keyCode, event); }

mas o problema é que isso roda apenas com a activity… se o sistema nao estiver com a activity aberta eu nao irei conseguir o evento :confused:

Criado 27 de janeiro de 2012
Ultima resposta 5 de fev. de 2012
Respostas 5
Participantes 2