Android Benachrichtigung mit RemoteViews - in Tätigkeit im Zusammenhang mit RemoteViews layout
Habe ich erforscht, wie das erstellen von benutzerdefinierten layout-Benachrichtigung mit RemoteView
.
So weit, ich bin in der Lage zu schaffen, die eine Benachrichtigung mit contentView
und bigContentView
deutete auf eine RemoteView
mit einem benutzerdefinierten layout-xml. Was jedoch nicht passieren, ist Activity
(in Verbindung mit benutzerdefinierten layout) begann, als dieser RemoteView
erstellt.
Habe ich doppelt geprüft und in mein layout-xml, es scheint die richtige Activity
Klasse name:
<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="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
tools:context=".LLMNotificationActivity" >
..... the rest are standard layout items: images, buttons and text
</RelativeLayout>
In der manifest-Datei mit der rechten nach der Hauptanwendung main-Aktivität, Aktion zur Meldung wird auch Hinzugefügt:
<activity
android:name=".LLMNotificationActivity"
android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Ich würde erwarten, wenn die Benachrichtigung verwendet RemoteView
für seine Inhalte, dass diese RemoteView
starten Sie die Aktivität, die angeschlossen ist, um dessen layout-definition. Allerdings erscheint es nicht.
Hier ist, wie ich eine Meldung erstellen Sie in der main-Anwendung Activity
:
protected void startNoti() {
if( noti!=null ) return;
Context context = getApplicationContext();
RemoteViews contentView = new RemoteViews(context.getPackageName(),R.layout.activity_noti1);
Notification.Builder notibuilder = new Notification.Builder(context);
notibuilder.setContentTitle(" ");
notibuilder.setContentText(" ");
notibuilder.setSmallIcon(R.drawable.ic_launcher);
notibuilder.setOngoing(true);
manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
noti = notibuilder.build();
noti.contentView = contentView;
manager.notify(NOTIFICATION_ID, noti);
}
LLMNotificationActivity
activity-Klasse wird wie gewohnt definiert:
public class LLMNotificationActivity extends Activity {
.... etc.... constructor, some button on-click handlers, nothing spectacular...
}
Kann jeder Punkt auf mich zu, was mir fehlt oder ob ich was falsch verstanden RemoteView
tun kann? Mein Verständnis ist, dass RemoteView
sollte, einmal erstellt, invoke-Aktivität in Zusammenhang mit Ihrem layout. Oder - gibt es irgendeine API, die ich verpasst habe, dass Sie explizit festlegen können, die Absichten des RemoteView
?
Was ich bis jetzt gefunden habe sind nur die Einstellung Inhalt Intent
die im Grunde nur startet einen Activity
einmal Benutzer berührt Benachrichtigung. Was ich Suche ist handhaben berührt, um einige UI-Elemente in benutzerdefinierten layout-Benachrichtigung, nicht zu starten Activity
unabhängig davon, wo der Benutzer klickt auf die Benachrichtigung Oberfläche.
Beispielsweise, wenn ich habe 3 Symbole (d.h. ImageView
) in einem RemoteView
die Benachrichtigung verwendet, ich möchte in der Lage sein zu handhaben touch auf jeden von Ihnen. Ich kann mir nicht vorstellen, dies wäre nicht möglich, wenn es nicht ist, was ist der Punkt, der mit RemoteView
im notification?
- XML-Attribute in der
tools
Manifestieren, wirken sich nur auf die Werkzeuge (d.h., die Bereitstellung der richtigen Thema, wenn man die layout-Vorschau in die IDE basiert auf dertools:context
deklariert ist). Sie haben keine Auswirkung zur Laufzeit. - Vielen Dank für den Hinweis. XML wurde automatisch generiert von meiner IDE.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie assoziieren die Aktivität dachte
setOnClickPendingIntent
starten, die die Tätigkeit von remote-Ansicht wie unten...Sie können die layout-id in derRemoteView
zu klicken.bieten eine
+id/layout_id
zu denRelativeLayout
Ihre mithilfe.Wenn Sie starten Sie die Aktivität, wenn der Benutzer klicken Sie auf die Benachrichtigung, dann müssen Sie
PendingIntent
als....Für 3 Tasten , die Sie verwenden müssen, erstellen Sie eine benutzerdefinierte
RemoteView
und verwendenPendingIntent
. einige Sache wie unten...Hier ist die benutzerdefinierte remote-Ansicht verwende ich für meine media-player-app. es hat drei button-handler auf.
Alles, was Sie tun müssen, ist fügen
setContentIntent
zu Ihrem Benachrichtigung.Generator wie diese:Nun, wenn Sie klicken Sie auf die Benachrichtigung, YourLanchedActivity ins Leben gerufen werden.