PENANDONTENTENT DE CONFLICitos de notificação e histórico de aplicativos

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

  •  23-09-2019
  •  | 
  •  

Pergunta

Estou criando uma notificação com algo semelhante ao seguinte:

    Intent ni = new Intent(this, SomeActivity.class);
    ni.putExtra("somestring", "somedata");
    PendingIntent contentIntent = 
        PendingIntent.getActivity(this, 0, ni, 
                PendingIntent.FLAG_UPDATE_CURRENT|PendingIntent.FLAG_ONE_SHOT);
    Context context = getApplicationContext();

    notification.setLatestEventInfo(context, 
            res.getString(R.string.app_name), 
            text, contentIntent);

A chave aqui são os dados extras sobre a intenção da notificação. Depois de clicar na notificação e ela traz à tona uma somatividade, ele traz à tona a atividade e os dados extras estão disponíveis.

No entanto, se eu sair do aplicativo, segure o botão home até que a lista de atividades recentes apareça e opte por abrir o aplicativo novamente, os dados extras ainda serão passados. Existe uma maneira de fazer esses dados passarem Se o aplicativo for aberto através da notificação e não da lista de atividades recentes?

Foi útil?

Solução

Parece que posso verificar se a atividade foi lançada a partir da caixa de diálogo recentes de atividades com isso:

if((getIntent().getFlags() & 
        Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
    // ignore extras
}
else {
    // do not ignore extras
}

Não sei se essa é a melhor maneira, mas funciona.

Outras dicas

Use um diferente Intent. Por exemplo, você pode adicionar um <intent-filter> para alguma string de ação personalizada e use -a para o seu Notification-Sediada PendingIntent. Em outras palavras, você não pode alterar a caixa de diálogo de atividades mais recentes, mas pode mudar seu lado do conflito.

Tente com:

int NOTIFICATION_CODE = 1;

PendingIntent contentIntent = 
          PendingIntent.getActivity(this, 
                                    NOTIFICATION_CODE, 
                                    ni,
                                    PendingIntent.FLAG_UPDATE_CURRENT | 
                                    PendingIntent.FLAG_ONE_SHOT
                                   );

Alterar Notification_code Valor para cada notificação.

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