2012-12-04 13 views
5

Ho una barra di notifica Android che utilizza una visualizzazione remota. Ho 2 pulsanti lì per riprodurre e mettere in pausa l'audio e anche un'icona per tornare all'applicazione. Voglio essere in grado di fare clic sull'icona (o ovunque ma sui 2 pulsanti) e tornare all'applicazione. Ecco il mio codiceNotifiche Remote View Android

Intent returnIntent = new Intent(_context, SplashScreenActivity.class); 
returnIntent.setAction(Intent.ACTION_MAIN); 
returnIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

PendingIntent remoteViewPendingIntent = PendingIntent.getActivity(_context,1, returnIntent,0); 
remoteView.setOnClickPendingIntent(R.id.btnAppIcon, remoteViewPendingIntent); 

Questo tutto funziona perfettamente nell'emulatore su Android 4.1. Quando viene premuta l'icona nella notifica, ritorna correttamente all'app. Tuttavia su Android 4.0.3 su Samsung S3, l'attività viene avviata in background ma la schermata di notifica non è nascosta. Voglio che la schermata di notifica venga cancellata una volta selezionata l'icona. Ho provato a utilizzare Notification.FLAG_AUTO_CANCEL nella notifica, ma questo non ha risolto il problema. Qualsiasi aiuto sarebbe molto apprezzato.

risposta

3

.setOnClickPendingIntent il comportamento varia su diversi MFG e versioni come si è verificato.

Per ottenere ciò che si desidera e comprimere automaticamente la finestra di notifica automaticamente (senza utilizzare la reflection), è necessario impostare un intent "globale" in sospeso per la vista di notifica. Dovrai includere il tuo R.id.btnAppIcon anche in quella vista "cattura tutto".

Esempio del "globale/default" notifica in attesa intento:

contentIntent = PendingIntent.getActivity(YourClass.this, 0, notificationIntent, 0); 
notification.contentIntent = contentIntent; 

Il "generale" intento di notifica quando viene utilizzato con PendingIntent.getActivity chiuderà la finestra di notifica su qualsiasi dispositivo (come ho osservato) .

+0

Questo ha risolto il problema. Grazie mille per il vostro aiuto. – user706593