3
respostas

Chamar Activity quando app esta em segunda plano

Fiz um app, esta funcionando legal. Essa app, fica verificando um MQTT, quando recebe um True, ele emiti um som. Tudo esta funcionando, conforme segui o curso. O problema é quando eu vou executar outro aplicativo e esse meu fica no segundo plano. So começa emitir o som, quando eu chamo novamente. Teria como abrir minha app de forma programatica? Não coloquei para rodar em background, apenas abri ela e não fica na tela.

3 respostas

Oi Ajuda, tudo bem? Não sei se entendi bem, mas você quer que o alerta seja executado mesmo quando seu app está em segundo plano, é isso? A documentação do Android recomenda o uso da API de WorkManager para qualquer atividade que não precisa ter o usuário ativo no seu app e que pode ser executada em qualquer momento.

No blog dos devs android do Google, tem um artigo sobre como usar o WorkManager e como ele funciona, vale a leitura se o inglês não for um desafio muito grande: https://medium.com/androiddevelopers/introducing-workmanager-2083bcfc4712

Olá Wanderson, obrigado pelo retorno. Vout e explicar até aonde cheguei estudando os cursos e a documentação. Nem coloquei minha aplicação em background ainda... vou fazer isso depois.

O pessoa abri a APP, e vai usar outras APP, então ela fica em segundo plano.... beleza? A minha APP, fica escutando através do MQTT, a mudança de estado no meu broker. Quanto isso acontece, através de um receiver broadcast, eu consegui captar e chamar uma notificação, isso está funcionando legal. Essa notificação aparece e quando clico abri um activity.

O que eu precisava é fazer abri algo, que chama mais atenção, tipo como acontece com o google agenda, que abri uma tela.... Preciso chamar atenção.....

O receiver seria o que esta abaixo, tentei colocar como codigo mais não sei como fazer isso.

public class AlarmeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("Alarme","Chamou receiver");
        Toast.makeText(context, "Alarme acionado...", Toast.LENGTH_LONG).show();
        MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.song_1);
        mediaPlayer.start();

        notificao(context, intent);
    }

    private void notificao(Context context, Intent intent_alarme) {

        Toast.makeText(context,"Recebeu notificação", Toast.LENGTH_LONG).show();
        Log.w("Alarme", "Notificando............ ");
        intent_alarme.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent_alarme, PendingIntent.FLAG_UPDATE_CURRENT);

        Uri som = RingtoneManager.getDefaultUri(R.raw.song_1);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "GUARDIAO")
                .setSmallIcon(R.mipmap.ic_logo)
                .setContentTitle("Notificação Guardião")
                .setContentText("Alarme acionado...")
                .setStyle(new NotificationCompat.BigTextStyle().bigText("BigText Alarme Acionado"))
                .setSound(som)
                .setPriority(NotificationCompat.PRIORITY_HIGH)
                .setAutoCancel(true)
                .setFullScreenIntent(pendingIntent, true);
                //.setContentIntent(pendingIntent);


        NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
        notificationManager.notify(1, builder.build());



    }




}

Quando você diz chamar mais atenção, você quer por exemplo, abrir um pop-up na frente da outra aplicação que está no foreground no momento?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software