Eine Benachrichtigung ist eine Nachricht, die Sie an den Benutzer außerhalb der normalen Benutzeroberfläche Ihrer Anwendung angezeigt werden können. Wenn Sie das System anweisen, eine Benachrichtigung auszugeben, scheint es zunächst als ein Symbol im Infobereich. Um die Einzelheiten der Mitteilung zu sehen, öffnet der Benutzer die Meldung Schublade. Sowohl der Infobereich und die Benachrichtigungsauszug sind System kontrollierten Gebieten, die der Benutzer jederzeit einsehen.
Android Toast-Klasse stellt eine praktische Möglichkeit, um Benutzern Warnungen zeigen, aber Problem ist, dass diese Warnungen sind nicht persistent, welche Warnungs blinkt auf dem Bildschirm für einige Sekunden bedeutet, und dann verschwindet.
Um die Einzelheiten der Mitteilung zu sehen, müssen Sie auf das Symbol, das Benachrichtigungsauszug mit Details an Benachrichtigung angezeigt wird auszuwählen. Während der Arbeit mit Emulator mit virtuellen Gerät, müssen Sie klicken und ziehen Sie die Statusleiste, um es zu erweitern, die Ihnen detailliert wie folgt. Dies wird nur 64 dp groß und nannte Normalansicht.
Oberhalb erweiterten Form kann ein Großer Bildschirm, die zusätzliche Details zu der Meldung haben wird. Sie können bis zu sechs zusätzliche Zeilen in der Mitteilung hinzuzufügen. Der folgende Screenshot zeigt diese Mitteilung.
Erstellen und Senden von Benachrichtigungen
Sie haben einfache Möglichkeit, um eine Benachrichtigung zu erstellen. Befolgen Sie die folgenden Schritte in der Anwendung, um eine Benachrichtigung zu erstellen -
Schritt 1 - Erstellen Mitteilung Builder
Als ein erster Schritt ist, um eine Benachrichtigung Bauer mit createNotificationCompat.Builder.build (). Sie werden Mitteilung Builder verwenden, um verschiedene Benachrichtigungseigenschaften wie seine kleinen und großen Icons, Titel, Priorität, etc. eingestellt
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
Schritt 2 - Festlegen von Benachrichtigungseigenschaften
Sobald Sie Builder-Objekt, können Sie seine Eigenschaften festlegen Mitteilung mit Builder-Objekt wie pro Ihre Anforderung. Aber dies ist zwingend erforderlich, um mindestens folgende Set -
- Ein kleines Symbol, um eingestellt setSmallIcon ()
- Ein Titel, indem festgelegt setContentTitle ()
- Detail Text, indem festgelegt setContentText ()
mBuilder.setSmallIcon(R.drawable.notification_icon); mBuilder.setContentTitle("Notification Alert, Click Me!"); mBuilder.setContentText("Hi, This is Android Notification Detail!");
Sie haben viele optionale Eigenschaften, die Sie für Ihre Meldung einstellen können. Um mehr über sie zu erfahren, siehe die Referenzdokumentation für NotificationCompat.Builder.
Schritt 3 - Befestigen Sie Aktionen
Dies ist ein optionaler Bestandteil und erforderlich, wenn Sie eine Aktion mit der Meldung angehängt werden soll. Eine Aktion ermöglicht es Benutzern, direkt aus der Meldung zu einem gehen Aktivität in Ihrer Anwendung, wo sie an einer oder mehreren Veranstaltungen suchen können oder wollen die weitere Arbeit.
Die Aktion wird durch eine definierte PendingIntent, die eineAbsichtserklärung, die eine Aktivität in Ihre Anwendung beginnt. Um die PendingIntent mit einer Geste zu assoziieren, rufen Sie die entsprechende Methode der NotificationCompat.Builder. Zum Beispiel, wenn Sie Aktivität starten, wenn der Benutzer die Meldung Text im Benachrichtigungsauszug klickt möchten, die durch den Aufruf PendingIntent fügen Sie setContentIntent ().
Ein PendingIntent Objekt hilft Ihnen, eine Aktion auf Ihre Anwendungen Namen durchzuführen, die oft zu einem späteren Zeitpunkt, ohne sich davon, ob Ihre Anwendung ausgeführt wird.
Wir nehmen Hilfe von Stapelbauer Objekt, das eine künstliche zurück Stack für das der Autor Activity enthält. Dies stellt sicher, dass die Navigation rückwärts von der Aktivität führt aus Ihrer Anwendung auf dem Startbildschirm.
Intent resultIntent = new Intent(this, ResultActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addParentStack(ResultActivity.class); // Adds the Intent that starts the Activity to the top of the stack stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(resultPendingIntent);
Schritt 4 - Geben Sie den Benachrichtigungs
Schließlich der Mitteilung Widerspruch an das System übergeben Sie durch den Aufruf NotificationManager.notify (), um Ihre Mitteilung zu senden. Stellen Sie sicher, anruft NotificationCompat.Builder.build () Methode auf Builder-Objekt, ehe sie es. Diese Methode kombiniert alle Optionen, die eingestellt worden und geben einen neuen Mitteilung Objekt.
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // notificationID allows you to update the notification later on. mNotificationManager.notify(notificationID, mBuilder.build());
Die NotificationCompat.Builder Class
Die NotificationCompat.Builder Klasse ermöglicht eine einfachere Kontrolle über alle Fahnen, sowie dazu beitragen, den Bau der typischen Benachrichtigung Layouts. Im Folgenden sind einige wichtige und am häufigsten gebrauchten Methoden als Teil der NotificationCompat.Builder Klasse erhältlich.
Sr.No. | Konstanten & Beschreibung |
---|---|
1 | Mitteilung build ()
Kombinieren Sie alle Optionen, die eingestellt worden und geben einen neuen Mitteilung Einwände erheben.
|
2 | NotificationCompat.Builder setAutoCancel (boolean AUTOCANCEL)
Das Setzen dieses Flags wird es machen, damit die Benachrichtigung automatisch gelöscht, wenn der Benutzer sie in der Platte einrastet.
|
3 | NotificationCompat.Builder setContent (RemoteViews views)
Liefern eine individuelle RemoteViews statt der Standard zu verwenden.
|
4 | NotificationCompat.Builder setContentInfo (CharSequence info)
Stellen Sie den großen Text auf der rechten Seite der Mitteilung.
|
5 | NotificationCompat.Builder setContentIntent (PendingIntent Vorsatz)
Liefern eine PendingIntent zu senden, wenn die Meldung angeklickt wird.
|
6 | NotificationCompat.Builder setContentText (CharSequence Text)
Stellen Sie den Text (zweite Reihe) der Mitteilung, in einem Standard-Benachrichtigung.
|
7 | NotificationCompat.Builder setContentTitle (CharSequence Titel)
Stellen Sie den Text (erste Reihe) der Mitteilung, in einem Standard-Benachrichtigung.
|
8 | NotificationCompat.Builder setDefaults (int Standardwerte)
Stellen Sie die Standard-Benachrichtigungsoptionen, die verwendet werden.
|
9 | NotificationCompat.Builder setLargeIcon (Bitmap-Symbol)
Stellen Sie die große Ikone, die im Laufband und Benachrichtigung dargestellt ist.
|
10 | NotificationCompat.Builder SetNumber (int number)
Stellen Sie die große Zahl an der rechten Seite der Mitteilung.
|
11 | NotificationCompat.Builder setOngoing (boolean kontinuierlichen)
Eingestellt werden, ob es sich um eine laufende Benachrichtigung.
|
12 | NotificationCompat.Builder setSmallIcon (int-Symbol)
Stellen Sie das kleine Symbol in der Benachrichtigungs Layouts verwenden.
|
13 | NotificationCompat.Builder setStyle (NotificationCompat.Style Stil)
Fügen Sie ein reichhaltiges Benachrichtigungs Stil zur Buildzeit angewendet werden.
|
14 | NotificationCompat.Builder setTicker (CharSequence TICKER)
Stellen Sie den Text, der in der Statusleiste angezeigt wird, wenn die Benachrichtigung zuerst ankommt.
|
15 | NotificationCompat.Builder setVibrate (long [] Pattern)
Stellen Sie die Vibrationsmuster zu bedienen.
|
16 | NotificationCompat.Builder setWhen (lang, wenn)
Stellen Sie die Zeit, die das Ereignis aufgetreten ist.Benachrichtigungen im Bedienfeld werden von dieser Zeit sortiert.
|
Beispiel
Folgendes Beispiel zeigt die Funktionalität von einem Android-Benachrichtigung mit einem NotificationCompat.Builder Klasse, die in Android 4.1 eingeführt wurde.
Schritt | Bezeichnung |
---|---|
1 | Sie werden Android-Studio IDE verwenden, um ein Android-Anwendung erstellen und benennen es als tutorialspoint unter einem Paketcom.example.notificationdemo. Bei der Erstellung dieses Projekt, stellen Sie sicher SDK Ziel und Kompilieren Sie mit bei der neuesten Version des Android SDK zu höheren Ebenen der APIs verwenden. |
2 | Ändern src / MainActivity.java Datei und fügen Sie den Code, um zu benachrichtigen (""), wenn der Benutzer Klick auf den Button, wird es Android-Benachrichtigungsdienst rufen. |
3 | Erstellen Sie eine neue Java-Datei src / NotificationView.java, die verwendet werden, um neue Layout als Teil der neuen Tätigkeit, die begonnen werden angezeigt wird, wenn Benutzer eine der Meldungen klicken |
4 | Ändern Sie das Layout XML-Datei res / layout / activity_main.xml zur Mitteilung Button in Bezug Layout hinzuzufügen. |
5 | Erstellen Sie ein neues Layout-XML-Datei res / layout / notification.xml.Dies wird als Layoutdatei für neue Tätigkeit, die starten wird, wenn Benutzer eine der Meldungen klicken Sie verwendet werden. |
6 | Keine Notwendigkeit, Standard-String-Konstanten ändern. Android Studio kümmert sich um Standard-String-Konstanten |
7 | Führen Sie die Anwendung auf Android-Emulator zu starten, und überprüfen Sie das Ergebnis der Änderungen in der Anwendung durchgeführt. |
Im Folgenden ist der Gehalt des modifizierten Haupttätigkeit Datei src / com.example.notificationdemo / MainActivity.java. Diese Datei kann jede der Grundzyklus Verfahren umfassen.
package 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 extends ActionBarActivity { Button b1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(Button)findViewById(R.id.button); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Notify("You've received new message"); } }); } private void Notify(String notificationTitle, String notificationMessage){ NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); @SuppressWarnings("deprecation") Notification notification = new Notification(R.drawable.abc,"New Message", System.currentTimeMillis()); Intent notificationIntent = new Intent(this,NotificationView.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,notificationIntent, 0); notification.setLatestEventInfo(MainActivity.this, notificationTitle,notificationMessage, pendingIntent); notificationManager.notify(9999, notification); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Im Anschluss wird der Inhalt sein res / layout / notification.xml Datei:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="400dp" android:text="Hi, Your Detailed notification view goes here...." /> </LinearLayout>
Im Folgenden ist der Gehalt des modifizierten Haupttätigkeit Datei src / com.example.notificationdemo / NotificationView.java.
package com.example.notificationdemo; import android.os.Bundle; import android.app.Activity; public class NotificationView extends Activity{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.notification); } }
Im Anschluss wird der Inhalt sein res / layout / activity_main.xml Datei -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="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" tools:context="MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Notification Example" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:textSize="30dp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point " android:textColor="#ff87ff09" android:textSize="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="@drawable/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="Notification" android:id="@+id/button" android:layout_marginTop="62dp" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" /> </RelativeLayout>
Im Anschluss wird der Inhalt sein res / Werte / strings.xml zwei neue Konstanten definieren -
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="action_settings">Settings</string> <string name="app_name">tutorialspoint </string> </resources>
Im Folgenden ist der Standardinhalt der AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.notificationdemo" android:versionCode="1" android:versionName="1.0" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.notificationdemo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".NotificationView" android:label="Details of notification" android:parentActivityName=".MainActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity"/> </activity> </application> </manifest>
Lasst uns versuchen, Ihre Lauf tutorialspoint Anwendung. Ich nehme an, Sie geschaffen hatte AVD dabei Umfeld Set-up. Um die App vom Android Studio, öffnen Sie eine Aktivität Dateien Ihres Projekt auszuführen, und klicken Sie auf
Ausführen-Symbol in der Symbolleiste. Android Studio installiert die App auf Ihrem AVD und startet es und wenn alles in Ordnung ist mit der Einrichtung und Anwendung, wird es folgende Emulator-Fenster anzuzeigen -
Klicken Sie nun auf Taste, werden Sie an der Spitze einer Nachricht finden Sie unter "Neue Nachricht Alert!" wird kurzzeitig angezeigt und nach, dass Sie folgende Bildschirm mit einem kleinen Symbol in der oberen linken Ecke haben.
Jetzt können erweitern Sie die Ansicht, Langzeit klicken Sie auf das kleine Symbol, nach einem zweiten wird es aktuelle Informationen angezeigt werden und das ist die Zeit, als Sie sollten Statusleiste nach unten ziehen, ohne Loslassen der Maus. Sie werden sehen, Statusleiste wird erweitert und Sie erhalten folgenden Bildschirm -
Großer Bildschirm Benachrichtigung
Der folgende Codeausschnitt zeigt, wie Sie die Meldung in der vorherigen Snippet, um den Posteingang Großansicht Stil verwenden erstellt verändern. Ich werde displayNotification () Modifikationsverfahren zu aktualisieren, um diese Funktionalität zu zeigen -
protected void displayNotification() { Log.i("Start", "notification"); /* Invoking the default notification service */ NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this); mBuilder.setContentTitle("New Message"); mBuilder.setContentText("You've received new message."); mBuilder.setTicker("New Message Alert!"); mBuilder.setSmallIcon(R.drawable.woman); /* Increase notification number every time a new notification arrives */ mBuilder.setNumber(++numMessages); /* Add Big View Specific Configuration */ NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); String[] events = new String[6]; events[0] = new String("This is first line...."); events[1] = new String("This is second line..."); events[2] = new String("This is third line..."); events[3] = new String("This is 4th line..."); events[4] = new String("This is 5th line..."); events[5] = new String("This is 6th line..."); // Sets a title for the Inbox style big view inboxStyle.setBigContentTitle("Big Title Details:"); // Moves events into the big view for (int i=0; i < events.length; i++) { inboxStyle.addLine(events[i]); } mBuilder.setStyle(inboxStyle); /* Creates an explicit intent for an Activity in your app */ Intent resultIntent = new Intent(this, NotificationView.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addParentStack(NotificationView.class); /* Adds the Intent that starts the Activity to the top of the stack */ stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent =stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(resultPendingIntent); mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); /* notificationID allows you to update the notification later on. */ mNotificationManager.notify(notificationID, mBuilder.build()); }
Nun, wenn Sie versuchen, Ihre Anwendung auszuführen, dann werden Sie feststellen, folgendes Ergebnis in erweiterter Form der Ansicht -
0 التعليقات:
Kommentar veröffentlichen