8

Desidero leggere/accedere/registrare le notifiche attivate sulla barra di notifica da altre applicazioni.Come ricevere una notifica quando viene notificata una notifica

Ho cercato Intents e PendingIntents molto, ma non ho potuto ottenere una soluzione.

La mia richiesta deve essere notificata quando viene inviata una notifica?

Oppure il sistema Android fornisce qualcosa per leggere le notifiche dalle applicazioni a livello utente?

risposta

5

Finalmente ho avuto la risposta !!! Utilizzando AccessibilityService

public class NotificationService extends AccessibilityService { 

@Override 
public void onAccessibilityEvent(AccessibilityEvent event) { 
    // TODO Auto-generated method stub. 
//Code when the event is caught 
    } 
@Override 
public void onInterrupt() { 
    // TODO Auto-generated method stub. 

} 

@Override 
protected void onServiceConnected() { 
    AccessibilityServiceInfo info = new AccessibilityServiceInfo(); 
     info.feedbackType = 1; 
      info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED; 
     info.notificationTimeout = 100; 
     setServiceInfo(info); 
    } 
} 

E il mio manifesto è:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="org.test.notify" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk android:minSdkVersion="8" /> 
<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <service android:name=".NotificationService" android:enabled="true"> 
      <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <action android:name="android.accessibilityservice.AccessibilityService"/> 
     </intent-filter> 
    </service> 
    </application> 
</manifest> 

Godetevi Coding !!!. :)

+1

Il codice serve solo per rilevare eventi correlati alle notifiche. Cambiando 'info.eventTypes =' possiamo prendere diversi tipi di eventi. – Kishore

+0

sto cercando di accedere al servizio connesso al metodo, ma fallisce, richiede qualsiasi autorizzazione – Calvin

+0

@ Calvin: è necessario attivare manualmente il servizio di accessibilità da Impostazioni (Impostazioni -> Accessibilità) – Kushal

0

Non c'è alcuna API per accedere a qualsiasi notifica. Almeno sarebbe un buco nella sicurezza. L'unica cosa che puoi è catturare alcuni eventi, che causa notifiche (come gli sms).

0

A Notification viene generato inviando un Intent.

Intent intent = new Intent(this, NotificationReceiver.class); 

I NotificationReceiver catture Intent e si apre un Notification.

È perfettamente possibile prendere lo stesso Intent in una delle applicazioni utilizzando uno BroadCastReceiver e il filtro su Intent desiderato.

+0

Non è previsto alcun "cambio barra di notifica" o "notifica attivata". – Kishore

+0

Questo è vero, ma le notifiche vengono attivate tramite Intents .. E gli intent possono essere catturati con un BroadCastReceiver. Naturalmente, tutto dipende dal tipo di Noficazione a cui vuoi accedere. – DroidBender

+0

In realtà voglio registrare tutte le notifiche. Quindi sto cercando un metodo generico per catturare tutte le notifiche. – Kishore

Problemi correlati