I'm trying to write a very basic android accessibility service that shows a message and vibrates when any notification is raised. I've tried testing it by sending an email myself on my phone (I figured that would show some notification). But I have not seen any notifications.
My service code looks like
public class NotifierService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent evt) {
Toast.makeText(this, "Got event from " + evt.getPackageName(), Toast.LENGTH_SHORT)
.show();
Vibrator v = (Vibrator) getSystemService(VIBRATOR_SERVICE);
v.vibrate(new long[] { 0, 250, 250, 250, 250, 250, 250, 250, 250 }, -1);
}
@Override
public void onInterrupt() { }
}
I have verified that the service is running and I have enabled it in the accessibility menu of the phone. And the manifest looks like this (some parts are removed that are not relevant):
<uses-permission android:name="android.permission.VIBRATE" />
<application>
<activity
android:name=".MyActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".NotifierService" android:enabled="true" >
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
</application>
MyActivity
is just an activity with a button for starting/stopping the service.
One other way to configure the accessibility service is to Override the
OnServiceConnected()
method of yourAccessibilityService
from java code.Accessibility Service is overkill for your purposes, you should use NotificationListenerService. The NotificationListenerService is much easier to implement and safer for users (privacy reasons).
I added a meta data element inside the service tag
And in the xml resources file I have