Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabreder

[Resolvido] Como programar click em uma notificação para retornar ao app de onde parou?

Recommended Posts

Olá,

Dentro do meu aplicativo tenho uma activity que funciona como um gravador de áudio, que é aberta a partir de outras activities do app sempre que preciso.

Uma situação comum seria a sequinte pilha:
MainActivity > AcidenteActivity > AudioRecordActivity

Nesse cenário, por exemplo, estando na AudioRecordActivity, inicio o processo de gravação do áudio, que deve continuar mesmo que o usuário saia para a Home ou outro aplicativo, mas sem encerrar o gravador. Nessa situação, por precaução eu crio uma notificação para que o usuário saiba que o gravador ficou ligado.

O que eu desejo fazer é bem simples, ou seja, ao clicar na notificação, quero que a AudioRecordActivity simplesmente retorne para o topo da pilha, sendo exibida a mesma instância ao usuário, que poderá então pausar, salvar ou cancelar a gravação.

O que tenho feito sem sucesso é o seguinte:

public void notifiqueGravacao() { 
Intent intent = new Intent(this, AudioRecordActivity.class); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

    Notification.Builder builder = new Notification.Builder(this, NotificationUtils.getChannelId(this));
    builder.setContentTitle("Colbat")
            .setContentText("O gravador de áudio está ativo!")
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentIntent(pendingIntent);

    Notification notification = builder.build();

    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    if (nm != null) {
        nm.notify(Constants.NOTIFICATION_ID, notification);
    }
}

Do jeito que está acima, ao clicar na notificação o app gera erro e é parado;
Quando mudo a activity alvo para AcidenteActivity, por exemplo, ela é aberta, mas então preciso pressionar back para voltar à tela do gravador, que é onde quero ir direto.
Já tentei usar flags, TaskStackBuilder, e muita coisa, sem funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SOLUÇÃO encontrada em:
https://stackoverflow.com/questions/16885706/click-on-notification-to-go-current-activity/21424959#21424959

Interessante é que não se deve colocar a activity de onde criou a notificação, mas a MainActivity do projeto, mais algumas configurações. Agora está perfeito!

public void notifiqueGravacao() {
        Intent resultIntent = new Intent(this, MainActivity.class);
        resultIntent.setAction(Intent.ACTION_MAIN);
        resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, resultIntent, 0);

        Notification.Builder mBuilder =
                new Notification.Builder(this, NotificationUtils.getChannelId(this))
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setContentTitle("Colbat")
                        .setContentText("Gravador de áudio ativo!");
        mBuilder.setContentIntent(pendingIntent);

        mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        Notification notification = mBuilder.build();
        mNotificationManager.notify(Constants.NOTIFICATION_ID, notification);
    }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.