Existe alguma maneira de receber uma notificação quando o usuário se desloca fora do dispositivo?

StackOverflow https://stackoverflow.com/questions/2190126

  •  25-09-2019
  •  | 
  •  

Pergunta

Preciso saber quando o usuário se afasta do telefone. Existem transmissões (ou similares) que notificam quando o telefone do usuário está desligado?

Foi útil?

Solução

Você pode usar o ACTION_SHUTDOWN Intenção que é transmitido quando o telefone está prestes a desligar. A documentação diz:

Os aplicativos normalmente não precisam lidar com isso, pois a atividade de primeiro plano também será interrompida.

Em outras palavras, se você responder a todos os eventos do ciclo de vida para sua atividade adequadamente, não há necessidade de usar isso, a menos que você realmente queira fazer algo específico relacionado ao desligamento.

o ACTION_SHUTDOWN A intenção foi introduzida no nível 4 da API, em outras palavras Só será enviado em telefones executando o Android 1.6 ou mais tarde.

Você prenderá a transmissão com um BroadcastReceiver. Vai parecer algo assim:

public class ShutdownReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //Insert code here
    }

}

Você também precisará de uma entrada no seu manifesto, como o seguinte:

<receiver android:name=".ShutdownReceiver">
  <intent-filter>
    <action android:name="android.intent.action.ACTION_SHUTDOWN" />
  </intent-filter>
</receiver>

Dependendo do que você está fazendo, outra opção seria usar o ACTION_BOOT_COMPLETED Intenção que é enviado quando o telefone é reiniciado.

Outras dicas

Além de ACTION_SHUTDOWN, você deve adicionar android.intent.action.QUICKBOOT_POWEROFF para o seu filtro de intenção.
ACTION_SHUTDOWN Nem sempre é transmitido em alguns dispositivos HTC (por exemplo, o EVO 4G).
Para ser mais específico, se você escolher reiniciar, ACTION_SHUTDOWN é transmitido, mas se você escolher desligar, QUICKBOOT_POWEROFF é transmitido.

Expandir o que Dave Webb disse que é a maneira apropriada de lidar com isso:

Você pode substituir as funções do ciclo de vida da atividade Android:

protected void onPause();
protected void onResume();

Na maioria dos cenários, implementá -los deve ser suficiente e não exigirá que você lide especificamente nos eventos "Power Off".

Há muito mais informações sobre o Site Android E na resposta para Esta questão do ciclo de vida.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top