Search code examples
androidandroid-intentnotificationsandroid-pendingintentaccessibilityservice

How to get notified when a notification is notified


I want to read/access/log the notifications fired on notification bar by other applications.

I searched Intents and PendingIntents a lot, but couldn't get a solution.

Does my application need to be notified when any notification is fired?

Or Does android system provide something to read notifications by the user-level applications?


Solution

  • Finally got the answer.!!! Using 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);
         }
    }
    

    And my Manifest is:

    <?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>
    

    Enjoy Coding.!!! :)