Notificações criando lollipop android
12 partes:Ele gera uma simples notificação para o primeiro item na listaCriar uma notificação com um item de ação para o segundoEle garante que o fluxo de trabalho é mantida em navegar entre as atividadesUsando um PendingIntent de actividade regularUsando um PendingIntent para uma atividade especialAprenda a alterar as notificações para o terceiro itemRemover notificações quando considerar necessárioCriar uma notificação de que se expande para o próximo itemCriar uma notificação com uma barra de progressoDefine alerta de notificação para Android 5Define o nível de notificações de segurançaIntegra todas as notificações criadas até agora
Você está desenvolvedor Android e você quer aprender a criar notificações na sua aplicação? Então este livro é para você. Nós mostramos-lhe como criar simples notificações, ações do usuário definidos nas notificações, excluir e atualizar notificações, use as barras de progresso dentro deles, criar maneiras de expandir o seu conteúdo, evitar anomalias na navegação do usuário e muito mais.
O artigo é baseado numa aplicação chamada de exemplo Notimax, que consiste em uma lista de itens, onde pressionando cada, verá uma notificação com uma função específica para o usuário. Vamos ver como os eventos associados construir à medida que avança na agenda, observando códigos de amostra e ilustrações.
passos
- As notificações serão exibidos pela primeira vez na área de notificação como um ícone, que deve ser descritivo o suficiente para identificar intuitivamente o que está acontecendo.
ListView
você fornece várias opções para emitir notificações ao sistema. Porque o design de cada item de lista É simples (um TextView
), Então você pode criar uma instância de um ArrayAdapter
receber uma matriz cordas com suas escolhas.
:Agora só você deve obter a lista e criar o nosso simples adaptador. Vamos ver:
...ArrayAdapter lista adaptador ListView privado-privado -... @ -setContentView vazio Overrideprotected onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) (R.layout.activity_main) - // Obter o listalist = (ListView) findViewById (R.id .lista) - // cria itens itemsString conteúdo = {"simples notificação","Notificação + Ação","+ Notificação de atualização","+ Aviso de Notificação","Notificação + Progress","Notificação Big Vista"} - // Cria adaptadoradapter = new ArrayAdapter(Este, android.R.layout.simple_list_item_1, itens) - // Relacionar-se com adaptador listalist.setAdapter (adaptador) -list.setOnItemClickListener (this) -notifyMgr = (NotificationManager) getSystemService (NOTIFICATION_SERVICE) -} public notification1 void ( int id, int IconId, título string, conteúdo de string) {NotificationCompat.Builder construtor = new NotificationCompat.Builder (this) .setSmallIcon (IconId) .setLargeIcon (BitmapFactory.decodeResource (getResources (), R.drawable.girl_avatar_48x48)). setContentTitle (título) .setContentText (conteúdo) .setColor (getResources () getColor (R.color.Dark).) - // Construir a notificação e emitirlanotifyMgr.notify (id, builder.build ()) -} notificação2 public void (int id, int IconId, título string, conteúdo de string) {// Criar o construtor builderNotificationCompat.Builder = new NotificationCompat.Builder (this) .setSmallIcon (IconId) .setLargeIcon (BitmapFactory.decodeResource (getResources (), R.drawable.girl_avatar_48x48) ) .setContentTitle (título) .setContentText (conteúdo) .setColor (getResources () getColor (R.color.Dark)) -. // nova instância de intenções apontou para EslabonIntent intenção = new Intent (this, Eslabon.class) - / / Criar pilaTaskStackBuilder StackBuilder = TaskStackBuilder.create (this) - // Adicionar padrestackBuilder.addParentStack atividade (Eslabon.class) - // Referenciando intenção para notificaciónstackBuilder.addNextIntent (intenção) - // Get PendingIntent resultante da pilaPendingIntent resultPendingIntent = StackBuilder. getPendingIntent (0, PendingIntent.FLAG_UPDATE_CURRENT) - // Atribuição pendente intentbuilder.setContentIntent (resultPendingIntent) - // Remover aviso ao interagir com ellabuilder.setAutoCancel (true) - // Construir a notificação e emitirlanotifyMgr.notify (id, builder.build ()) -} / * Utilize este código para tentar um vazio notificação2 ESPECIALpublic ATIVIDADE (id int, int IconId, título string, conteúdo string) Intent.FLAG_ACTIVITY_CLEAR_TASK) -PendingIntent pendingIntent = PendingIntent.getActivity (this, 0, intenção, pendingIntent .FLAG_UPDATE_CURRENT) - // Atribuição pendente intentbuilder.setContentIntent (pendingIntent) - // Construir a notificação e emitirlanotifyMgr.notify (id, builder.build ()) - * / notification3 public void () {string GRUPO_NOTIFICACIONES = "notificaciones_similares"-Notification Aviso - // Verifique se fosse pressionada a itemif (segundaVez!) {Notificação = new NotificationCompat.Builder (this) .setContentTitle ("nova mensagem") .setSmallIcon (R.drawable.ic_stat_msg) .setContentText ("Carlos Blueberry Onde você está?") .setColor (GetResources () getColor (R.color.Dark)) setVisibility (NotificationCompat.VISIBILITY_PUBLIC) .build () - .. // Ativar banderasegundaVez = escambo} else {notificação = new NotificationCompat.Builder (this). setContentTitle ("2 novos lugares") .setSmallIcon (R.drawable.ic_stat_msg) .setNumber (2) .setColor (getResources (). GetColor (R.color.Dark)). SetStyle (nova NotificationCompat.InboxStyle (). AddLine ("Carlos Blueberry Se você viu?") .addLine ("logotipo Ximena Noel redesenhado") .setBigContentTitle ("2 novos lugares")) SetGroup (GRUPO_NOTIFICACIONES) .setGroupSummary (true) .build () -.} NotifyMgr.notify (3, aviso prévio) -} notification4 public void (int id, int IconId, título String, conteúdo de string) {// Estruturação notificaciónNotificationCompat .Builder builder = new NotificationCompat.Builder (this) .setSmallIcon (IconId) .setContentTitle (título) .setContentText (conteúdo) .setColor (getResources () getColor (R.color.Dark).) setVisibility (NotificationCompat.VISIBILITY_PUBLIC). - // cria intentIntent intenção = new Intent (this, MainActivity.class) -intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK) - // Criar pendentes intentPendingIntent fullScreenPendingIntent = PendingIntent.getActivity (this, 0, intenção, PendingIntent.FLAG_CANCEL_CURRENT) - // Assign e estabelecer uma verdadeira intenção de notificar quando avisobuilder.setFullScreenIntent (fullScreenPendingIntent, true) - // Construir a notificação e emitirlanotifyMgr.notify (id, builder.build ()) -} public void notification5 (id int final, int IconId, título string, conteúdo String) {fim NotificationCompat.Builder construtor = new NotificationCompat.Builder (este) .setSmallIcon (IconId) .setContentTitle (título) .setContentText (conteúdo) .setColor (getResources () getColor (R.color.Dark).) - novo thread (new Runnable () {@Overridepublic void run () {int i - / * // ciclo para simular progresofor (i = 0- i lt; = 100- i + = 5) {// Certifique-se de definir 100% como máximabuilder.setProgress medida (100, i, false) - // Emita o notificaciónnotifyMgr.notify (id, builder.build ()) - // Delay execução hilotry {// Atraso 1sThread.sleep (1000) -} catch (InterruptedException e) {Log.d (TAG, "sono Falha (1000) ") -}} * // * ATUALIZAÇÃO mensagem de sucesso * /// AVISO Unfold para terminarbuilder.setContentText ("Indicador de atividade") // Remova a barra progreso.setProgress (0, 0, true) -notifyMgr.notify (id, builder.build ()) -}}) start () -.} Notification6 public void (int id, int IconId, String titulo, conteúdo de string) {intenção intenção = new Intent (this, Eslabon.class) -intent.setAction (Intent.ACTION_VIEW) -PendingIntent piDismiss = PendingIntent.getActivity (this, 0, intenção, PendingIntent.FLAG_UPDATE_CURRENT) -NotificationCompat.Builder mBuilder = new NotificationCompat.Builder (this) .setSmallIcon (IconId) .setLargeIcon (BitmapFactory.decodeResource (getResources (), R.drawable.girl_avatar_48x48)). setContentTitle (título) .setContentText (conteúdo) .setColor (getResources (). GetColor (R.color.Dark)). setStyle (nova NotificationCompat.BigTextStyle (). bigText (conteúdo + "Se nós queremos" +"encontrar amanhã e eu vou mostrar o" +"detalhes da aplicação")). Addaction (R.drawable.ic_stat_respond,"RESPONDER", PiDismiss) .addAction (R.drawable.ic_stat_ignore,"IGNORE", Nulo) .setAutoCancel (true) -Notification notificação = mBuilder.build () - // Construir a notificação e emitirlanotifyMgr.notify (id, notificação) -} @ Overridepublic vazio onItemClick (AdapterViewlt; gt; pai, Vista, int? posição, longa id) {Log.d (TAG, "onItemClick (): artigo" + Position) -switch (posição) {case 0: notification1 (1 R.drawable.ic_stat_msg,"Ximena Noel",": D Agora eu tenho o novo logotipo!") -break De Caso 1: notificação2 (2 R.drawable.ic_stat_msg,"Ximena Noel",": D Agora eu tenho o novo logotipo!") -break-Case 2: notification3 () - break-case 3: notification4 (4, R.drawable.ic_stat_alert,"urgente","Confirmar reunião de negócios com Carlos") -break De Caso 4: notification5 (5, android.R.drawable.stat_notify_sync,"A sincronização de aplicativos","progresso") -break-Case 5: notification6 (6, R.drawable.ic_stat_msg,"Ximena Noel",": D Agora eu tenho o novo logotipo ...!") -}} @ Overridepublic boolean onCreateOptionsMenu (menu Menu) {getMenuInflater () inflar (R.menu.menu_main, menu) -Retornar verdade -.} @ Boolean Overridepublic onOptionsItemSelected (item de MenuItem) {int id = item.getItemId () - if (id == R.id.action_cancel) {// Opção para cancelar todas as notificações emitidasnotifyMgr.cancelAll () - retorno de escambo super.onOptionsItemSelected} return (item) -}}