Android Notifications

En varsling
er en melding du kan vise til brukeren utenfor programmets normal UI. Når du forteller at systemet skal utstede et varsel, først ser det ut som et ikon i systemstatusfeltet. For å se detaljene i meldingen, åpnes brukeren varselet skuffen. Både systemstatusfeltet og varslings skuff er system-kontrollerte områder som brukeren kan se når som helst.

Android Toast
klasse gir en praktisk måte å vise brukere varsler, men problemet er at disse varsler er ikke vedvarende som betyr varsel blinker på skjermen i noen sekunder og deretter forsvinner.

For å se detaljene i varselet, må du velge ikonet som vil vise varsling skuff ha detaljer om varsling . Mens han jobbet med emulator med virtuell enhet, må du klikke og dra ned statuslinjen for å utvide det som vil gi deg detaljert som følger. Dette vil være bare 64 dp
høy og kalles vanlig visning.

Over utvidet form kan ha en Big View
som vil ha flere detaljer om varselet. Du kan legge til opptil seks ekstra linjer i varselet. Følgende skjermbilde viser slik melding.

Opprette og sende meldinger

Du har enkel måte å lage en melding. Følg disse trinnene i programmet for å skape en varsling −

Trinn 1 - Opprett Notification Builder

Som et første skritt er å skape en varsling byggmester hjelp NotificationCompat.Builder.build ()
. Du vil bruke Notification Builder å sette opp ulike Varslings egenskaper som sin små og store ikoner, tittel, prioritet etc.
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder (denne)
Trinn 2 - Sette Varslings Properties
< p> Når du har Builder
objekt, kan du sette sine Varslings egenskaper ved hjelp Builder objekt som per kravet. Men dette er obligatorisk å stille minst følgende −

Et lite ikon, satt av setSmallIcon ()

En tittel, satt av setContentTitle ()

Detalj tekst, satt av setContentText()



mBuilder.setSmallIcon(R.drawable.notification_icon);mBuilder.setContentTitle("Notification Våken, Click Me "); mBuilder.setContentText (" Hei, Dette er Android Notification Detail ");!

Du har mange valgfrie egenskaper som du kan stille for varsling vil vite mer om dem, se referanse. dokumentasjon for NotificationCompat.Builder

Trinn 3 -. Fest Handlinger

Dette er en valgfri del og nødvendig hvis du vil legge ved en handling med varselet En handling tillater brukere å gå direkte fra. underretning til en Aktivitets
i din søknad, der de kan se på en eller flere hendelser eller gjøre videre arbeid.

Handlingen er definert av en PendingIntent
inneholder en < b> Intent
som starter en aktivitet i programmet. Hvis du vil knytte den PendingIntent med en gest, kaller den riktige metoden for NotificationCompat.Builder
. For eksempel, hvis du ønsker å starte aktivitet når brukeren klikker varslings teksten i varslings skuffen, legger du den PendingIntent ved å ringe setContentIntent ()
.

En PendingIntent objekt hjelper deg å utføre en handling på søknader vegne, ofte på et senere tidspunkt, uten å bry deg om hvorvidt programmet kjører.

Vi tar hjelp av stabelen byggmester objekt som vil inneholde en kunstig tilbake stabelen for startet aktivitet. Dette sikrer at navigere bakover fra aktivitets fører ut av din søknad til startskjermen
Intent resultIntent = new Intent (dette, ResultActivity.class);. TaskStackBuilder stackBuilder = TaskStackBuilder.create (denne); stackBuilder.addParentStack (ResultActivity. klasse); //Legger til Intent som starter aktiviteten til toppen av stackstackBuilder.addNextIntent (resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);mBuilder.setContentIntent(resultPendingIntent);
Step 4 - Issue varslings

Til slutt, passerer du Notification objekt til systemet ved å ringe NotificationManager.notify () for å sende meldingen. Kontroller at du ringer NotificationCompat.Builder.build ()
metoden på byggmester objekt før varsle den. Denne metoden kombinerer alle alternativene som er satt og retur en ny Varsling
objekt
NotificationManager mNotificationManager = (NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE.); //NotificationID lar deg oppdatere varslings senere on.mNotificationManager.notify (notificationID, mBuilder.build ());
Den NotificationCompat.Builder Class

NotificationCompat.Builder klassen tillater enklere kontroll over hele flagg, samt bidra til bygging av de typiske varslings oppsett. Følgende er noen viktige og mest brukte metodene tilgjengelig som en del av NotificationCompat.Builder klasse
Sr.No.Constants &.; Description1 Varsling build ()

Kombiner alle alternativene som er satt og returnere en ny Notification objekt.
2 NotificationCompat.Builder setAutoCancel (boolsk autoCancel)

Innstilling dette flagget vil gjøre det slik varslings avbrytes automatisk når brukeren klikker det i panelet.
3 NotificationCompat.Builder setContent (RemoteViews visninger)

levere en tilpasset RemoteViews å bruke i stedet av standard en.
4 NotificationCompat.Builder setContentInfo (CharSequence info)

Sett den store teksten på høyre side av meldingen.
5 NotificationCompat.Builder setContentIntent (PendingIntent forsett)

Levere en PendingIntent å sende når meldingen er klikket.
6 NotificationCompat.Builder setContentText (CharSequence tekst)

Sett tekst (andre rad) av varselet, i en standard varsel.
7 NotificationCompat.Builder setContentTitle (CharSequence tittel)

Angi teksten (første rad) av meldingen, i en standard varsling.
8 NotificationCompat.Builder setDefaults (int mislighold)

Fastsette standard varslingsalternativer som vil bli brukt.
9 NotificationCompat.Builder setLargeIcon (Bitmap ikon)

Sett stort ikon som vises i ticker og varsling.
10 NotificationCompat.Builder setNumber (int tall)


Still stort antall på høyre side av meldingen. 11 NotificationCompat.Builder setOngoing (boolsk pågå)

Angi om dette er en pågående varsling.
12 NotificationCompat.Builder setSmallIcon (int ikon)

Sett det lille ikonet å bruke i varslingsoppsett.
13 NotificationCompat.Builder setStyle (NotificationCompat.Style stil)


Legg en rik varsling stil som skal brukes på byggetiden. 14 NotificationCompat .Builder setTicker (CharSequence tickerText)

Angi teksten som vises på statuslinjen når meldingen først kommer
15. NotificationCompat.Builder setVibrate (lang [] mønster)
< p> Sett vibrasjonsmønster som skal brukes.
16 NotificationCompat.Builder setWhen (lang da)

Sett den tiden at hendelsen skjedde. Meldinger i panelet er sortert etter dette tidspunktet.

Eksempel

Følgende eksempel viser funksjonaliteten til en Android varsling ved hjelp av en NotificationCompat.Builder
klasse som har blitt introdusert i Android 4.1.
StepDescription1You vil bruke Android studio IDE å lage en Android-applikasjon, og gi det et navn som tutorialspoint
under en pakke com.example.notificationdemo
. Mens du oppretter dette prosjektet, må du Target SDK Hotell og kompilere med
på den nyeste versjonen av Android SDK til å bruke høyere nivåer av APIs.2Modify src /MainActivity.java
fil og legge til koden for å varsle (""), hvis brukeren klikker på knappen, vil det ringe android varsling service.3Create en ny Java-fil src /NotificationView.java
, som vil bli brukt for å vise ny layout som en del av ny aktivitet som vil bli startet når brukeren klikker noen av notifications4Modify layout XML fil res /layout /activity_main.xml
å legge Notification knapp i forhold layout.5Create en ny layout XML-fil res /layout /notification.xml
. Dette vil bli brukt som layout fil for ny aktivitet som vil starte når brukeren klikker noen av notifications.6No må endre standard string konstanter. Android studio tar seg av standardstrengen constants7Run programmet til å lansere Android emulator og kontrollere resultatet av de endringer som er gjort i programmet.

Følgende er innholdet i den modifiserte hovedaktivitet filen src /com.example.notificationdemo /MainActivity.java
. Denne filen kan inneholde hver av de grunnleggende livssyklus metoder
pakken com.example.notificationdemo;. Import android.app.Notification, import android.app.NotificationManager, import android.app.PendingIntent, import android.content.Intent; import android.support.v7.app.ActionBarActivity, import android.os.Bundle, import android.view.Menu, import android.view.MenuItem, import android.view.View, import android.widget.Button; public class MainActivity strekker ActionBarActivity {Button b1; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); b1 = (Button) findViewById (R.id.button); b1.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) {Varsle ("Du har mottatt ny melding");}}); } Private void Informer (String notificationTitle, String notificationMessage) {NotificationManager notificationManager = (NotificationManager) getSystemService (NOTIFICATION_SERVICE); SuppressWarnings ("Nedgraderingen") Melding varsling = new Notification (R.drawable.abc, "Ny melding", System.currentTimeMillis ()); Intent notificationIntent = new Intent (dette, NotificationView.class); PendingIntent pendingIntent = PendingIntent.getActivity (dette, 0, notificationIntent, 0); notification.setLatestEventInfo (MainActivity.this, notificationTitle, notificationMessage, pendingIntent); notificationManager.notify (9999, varsling); }Override Public boolean onCreateOptionsMenu (Meny menyen) {//Blås menyen; dette legger til elementer i handlingsfeltet hvis det er til stede. . getMenuInflater () blåse (R.menu.menu_main, menyen); return true; }Override Public boolean onOptionsItemSelected (MENUITEM element) {//Håndtak handlingen bar varen klikk her. Handlingsfeltet vil //automatisk håndtere klikker på Hjem /Opp-knappen, så lenge //som du angir en forelder aktivitet i AndroidManifest.xml. int id = item.getItemId (); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) {return true; } Returnere super.onOptionsItemSelected (element); }}

Etter vil være innholdet i res /layout /notification.xml
file:?
< xml version = "1.0" encoding = "utf-8" > < LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android" android: orientering = "vertikal" android: layout_width = "fill_parent" android: layout_height = "fill_parent" > < TextView android: layout_width = "fill_parent" android: layout_height = "400dp" android: text = "Hei, går detaljert varsel visning her ...." /> < /LinearLayout >

Følgende er innholdet av den modifiserte hovedaktivitet filen src /com.example.notificationdemo /NotificationView.java
pakken com.example.notificationdemo;. import android.os.Bundle, import android.app.Activity; public class NotificationView strekker Aktivitet {Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.notification); }}

Etter vil være innholdet i res /layout /activity_main.xml
fil −
< RelativeLayout xmlns: android = "http://schemas.android.com/apk/res /Android "xmlns: verktøy =" http://schemas.android.com/tools "android: layout_width =" match_parent "android: layout_height =" match_parent "android: paddingBottom =" @ dimen /activity_vertical_margin "android: paddingLeft =" @ dimen /activity_horizontal_margin "android: paddingRight =" @ dimen /activity_horizontal_margin "android: paddingTop =" @ dimen /activity_vertical_margin "verktøy: kontekst =" MainActivity "> < TextView android: id = "+ id /textView1" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Melding Eksempel" android: layout_alignParentTop = "true" android: layout_centerHorizontal = "true" android: Tekststørrelse = "30dp" /> < TextView android: id = "+ id /textView2" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Tutorials point" android: textcolor = "# ff87ff09" android: Tekststørrelse = "30dp "android: layout_below =" + id /textView1 "android: layout_centerHorizontal =" true "android: layout_marginTop =" 48dp "/> < ImageButton android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /imageButton" android: src = "@ teikne /abc" android: layout_below = "+ id /textView2" android : layout_centerHorizontal = "true" android: layout_marginTop = "42dp" /> < Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Melding" android: id = "+ id /knapp" android: layout_marginTop = "62dp" android: layout_below = "+ id /imageButton "android: layout_centerHorizontal =" true "/> < /RelativeLayout >

Etter vil være innholdet i res /verdier /strings.xml
å definere to nye konstanter og minus;
<? xml version = "1.0" encoding = "utf -8 ">? < resources > < string name = "action_settings" > Innstillinger < /string > < string name = "APP_NAME" > tutorialspoint < /string > < /ressurser >

Følgende er innholdet mislighold av AndroidManifest.xml

<? xml version = "1.0" encoding = "utf-8" >? < manifest xmlns: android = "http://schemas.android.com/apk/res/android" pakken = "com.example.notificationdemo" android: version = "1" android: versjon = "1.0" > < søknad android: allowBackup = "true" android: icon = "@ teikne /ic_launcher" android: label = "@ streng /APP_NAME" android: tema = "@ stil /AppTheme" > < aktivitet android: name = "com.example.notificationdemo.MainActivity" android: label = "@ streng /APP_NAME" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.LAUNCHER" /> < /intent-filter > < /aktivitets > < aktivitet android: name = android: label = "Detaljer om varsling" android: «NotificationView." parentActivityName = ". MainActivity" > < meta-data android: name = "android.support.PARENT_ACTIVITY" android: value = ". MainActivity" /> < /aktivitets > < /søknad > < /manifest >

La oss prøve å kjøre ditt tutorialspoint
søknad. Jeg antar at du hadde laget ditt AVD
mens du gjør miljøet oppsett. For å kjøre programmet fra Android Studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Android Studio installerer programmet på AVD og starter den, og hvis alt er bra med oppsettet og søknad, vil det vise følgende Emulator vindu −

Nå klikk
, vil du se på toppen en melding "Ny melding Alert!" vil vise et øyeblikk og etter det vil du ha følgende skjermbilde ha et lite ikon øverst i venstre hjørne.

Nå kan utvide visningen, lang klikk på det lille ikonet, etter et sekund det vil vise oppdatert informasjon og dette er tiden da du skal dra statuslinjen ned uten å slippe mus. Du vil se statuslinjen vil utvide og du vil få følgende skjermbilde −

Big View Notification

Følgende kodebit demonstrerer hvordan å endre varslings opprettet i forrige tekstutdrag å bruke innboksen store view stil. Jeg kommer til å oppdatere displayNotification () modifikasjon metode for å vise denne funksjonaliteten −
beskyttet void displayNotification () {Log.i ("Start", "varsel"); /* Starte standard varslingstjenesten * /NotificationCompat.Builder mBuilder = new NotificationCompat.Builder (denne); mBuilder.setContentTitle ("Ny melding"); mBuilder.setContentText ("Du har mottatt ny melding."); mBuilder.setTicker ("Ny melding Alert!"); mBuilder.setSmallIcon (R.drawable.woman); /* Øke varslingsnummeret hver gang en ny melding kommer * /mBuilder.setNumber (++ numMessages); /* Legg Big View Spesifikk Configuration * /NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle (); String [] hendelser = new String [6]; hendelser [0] = new String ("Dette er første linje ...."); hendelser [1] = new String ("Dette er andre linje ..."); hendelser [2] = new String ("Dette er tredje linje ..."); hendelser [3] = new String ("Dette er fjerde linje ..."); hendelser [4] = new String ("Dette er femte linje ..."); hendelser [5] = new String ("Dette er sjette linje ..."); //Setter en tittel for Innboks stil stor visning inboxStyle.setBigContentTitle ("Big Tittel Details:"); //Flytter hendelser i den store visningen for (int i = 0; i < events.length; i ++) {inboxStyle.addLine (events [i]); } MBuilder.setStyle (inboxStyle); /* Oppretter en eksplisitt intensjon for en aktivitet i programmet ditt * /Intent resultIntent = new Intent (dette, NotificationView.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create (denne); stackBuilder.addParentStack (NotificationView.class); /* Legger til Intent som starter aktiviteten til toppen av bunken * /stackBuilder.addNextIntent (resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent (0, PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent (resultPendingIntent); mNotificationManager = (NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE); /* NotificationID lar deg oppdatere senere varselet. * /MNotificationManager.notify (notificationID, mBuilder.build ());}

Nå hvis du vil prøve å kjøre programmet så vil du finne følgende resultat i utvidet form av utsikten −