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 der tools:context deklariert ist). Sie haben keine Auswirkung zur Laufzeit.
  • Vielen Dank für den Hinweis. XML wurde automatisch generiert von meiner IDE.
InformationsquelleAutor Sinisa | 2014-03-23
Schreibe einen Kommentar