Você está na página 1de 11

PROGRAMAÇÃO

ANDROID
Notificações

Universidade Federal de Sergipe


Departamento de Sistemas de Informação
Prof. Andrés Menéndez
ammenendez@gmail.com
Introdução
• Mecanismo bastante utilizado pelos dispositivos móveis
para permitir chamar a atenção do usuário para “algo”
Intodução
• Existem dois tipos de notificação
• Notificações locais
• Notificações remotas

• As notificações locais são aquelas geradas no próprio


celular com algum tipo de programação
• As notificações remotas, também chamadas de push
notification, usam a internet para envio das mensagens
Notificações
• O funcionamento da notificação pode ser visto na figura
abaixo

Geração da
notificação

Activity
Notificações
• Como isso acontece?

• Note que a notificação gerada aparece fora da sua


aplicação.
• E ainda... Desse “local externo” chamamos uma activity
da nossa aplicação

• Para fazer essa magia temos que usar Intents associados


a PendingIntents
Notificações
• O app de exemplo de notificações possui uma activity
com um campo texto e um botão que envia uma
notificação
Notificações
• Vejamos o método onCreate()

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final EditText msg = (EditText) findViewById(R.id.edtMensagem);


Button enviar = (Button) findViewById(R.id.btnEnviar);
enviar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, NotificacaoActivity.class);
intent.putExtra("mensagem", msg.getText().toString());
int id = (int) (Math.random()*1000);
PendingIntent pi = PendingIntent.getActivity(getBaseContext(), id,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notificações
• Continuação do método onCreate()

Notification notification = new Notification.Builder(getBaseContext())


.setContentTitle("De: Andrés Menéndez" )
.setContentText(msg.getText()).setSmallIcon(R.mipmap.ic_fone)
.setContentIntent(pi).build();
NotificationManager notificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notification.flags |= Notification.FLAG_AUTO_CANCEL;

notificationManager.notify(id, notification);
}
});
}
Notificações
• A outra activity (NotificacaoActivity) tem um label fixo e
outro label que é modificado de acordo com o parâmetro
que foi enviado
Notificações
• Essa activity de notificação não tem nada de especial
• Veja que no código do método onCreate() só fizemos
receber o parâmetro enviado

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notificacao);

TextView msg = (TextView)findViewById(R.id.tvMsg);

String mensagem = getIntent().getStringExtra("mensagem");


msg.setText(mensagem);
}
Notificações
• Note que podemos ter várias notificações geradas
• Quando o usuário clicar sobre uma delas ele será
direcionado para a Intent “correta”