Como programar click em uma notificação para retornar à activity anterior

  • Respostas:1
  • AbertoNão stickySem resposta
  • Posts no fórum: 3

30/03/2018, 19:25:31 via Web

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 notofiqueGravacao() {
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.

Responder
  • Posts no fórum: 3

30/03/2018, 21:03:01 via Web

SOLUÇÃO

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);
    }
útil?
Responder

Recommended articles