Les notifications Android avec RemoteViews - avoir une activité associée à RemoteViews mise en page
J'ai fait des recherches sur la façon de créer personnalisé-mise en page de notification à l'aide de RemoteView
.
Jusqu'à présent, je suis en mesure de créer une notification avec contentView
et bigContentView
pointant vers un RemoteView
avec une mise en page personnalisée xml. Cependant, ce n'est pas arriver, c'est d'avoir Activity
(associée à une mise en page personnalisée) a commencé lorsque ce RemoteView
est créé.
J'ai vérifié et ma mise en page xml, il semble avoir corriger Activity
nom de la classe:
<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>
Dans le fichier de manifeste, juste après l'application principale de l'activité principale, la notification de l'activité est également ajouté:
<activity
android:name=".LLMNotificationActivity"
android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Je en droit d'attendre lors de la notification utilise RemoteView
de son contenu, que ce RemoteView
va lancer une activité qui est attaché à sa définition de la structure. Cependant, il semble que non.
Voici comment j'ai créer une notification dans l'application principale 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
classe d'activité est défini comme d'habitude:
public class LLMNotificationActivity extends Activity {
.... etc.... constructor, some button on-click handlers, nothing spectacular...
}
Quelqu'un peut-il point pour moi ce que je suis absent ou si j'ai mal compris ce que RemoteView
peut faire? Ma compréhension est que RemoteView
devrait, une fois créé, invoquer l'activité associée à sa disposition. Ou - est-il une API, j'ai raté explicitement pouvez définir à l'intention de la RemoteView
?
Ce que j'ai trouvé jusqu'à présent ne sont que paramètre de contenu Intent
qui, fondamentalement, tout simplement lance un Activity
une fois que l'utilisateur touche de notification. Ce que je cherche est de gérer les touches de certains éléments de l'INTERFACE utilisateur à l'intérieur personnalisée-mise en page de notification, de ne pas lancer un Activity
indépendamment de l'endroit où l'utilisateur clique sur la notification de la surface.
Par exemple, si j'ai 3 icônes (c'est à dire ImageView
) dans un RemoteView
de la notification utilise, j'aimerais être capable de gérer le tactile sur chacun d'eux. Je ne peux pas imaginer ce ne serait pas possible, comme si elle ne l'est pas, ce qui est le point d'avoir RemoteView
dans la notification?
tools
Manifeste seulement affecter les outils (c'est à dire, les bonnes thème lors de la recherche à la mise en page aperçu dans votre IDE, basé sur la tools:context
qui est déclarée). Ils n'ont pas d'effet au moment de l'exécution.Merci de remarquer. XML a été auto-produit par mon IDE.
OriginalL'auteur Sinisa | 2014-03-23
Vous devez vous connecter pour publier un commentaire.
Vous devez associer l'activité de la pensée
setOnClickPendingIntent
pour lancer l'activité de vue à distance comme ci-dessous...Vous pouvez définir la mise en page de l'id dans leRemoteView
à cliquer.fournir un
+id/layout_id
à laRelativeLayout
votre aide.Si vous devez lancer l'activité lorsque l'utilisateur clic sur la notification, alors vous devez utiliser
PendingIntent
....Pour 3 boutons , Vous devez créer un personnalisé
RemoteView
et l'utilisationPendingIntent
. quelque chose comme ci-dessous...Ici est la coutume de vue à distance je suis à l'aide de l'un de mes media player app. il a trois bouton pour le gestionnaire de clic.
vérifier mes mises à jour de réponse. l'espoir c'est ce que vous cherchez
Merci mais comme je l'ai expliqué, je ne veux pas lancer une activité sur une notification, cliquez sur. Je suis à la recherche de votre deuxième partie, présentera un rapport avec le commentaire le plus tôt possible.
ok alors utiliser l'outil de vues à distance
vérifier mes mises à jour de réponse. l'utilisation de la première partie. Vous pouvez associer une activité avec vue à distance. l'espoir c'est ce que votre exigence.
OriginalL'auteur Libin
Tout ce que vous devez faire est d'ajouter
setContentIntent
à votre de Notification.Générateur de comme ceci:Maintenant, lorsque vous cliquez sur la notification, YourLanchedActivity sera lancé.
OriginalL'auteur IgorGanapolsky