Notification Listener Extension to listen to all notifications of your device. Packagename, title and text of all notifications will be stored in TinyDB. Also of course works if your app is not running and also survives a reboot of the device.
Minimum API level is 21 (Android 5).
Version History
Nov 8th, 2020: Version 1: initial version for App Inventor.
Aug 16th, 2022: Version 2: filter by package name added, SDK31 update: exported = "true" added in manifest for serviceelement
Aug 10th, 2023: Version 3: Google Pay fix by vknow360
Jan 20th, 2024: Version 4: replace local broadcast receiver by normal broadcast receiver by Kumaraswamy
Jan 22th, 2024: Version 5: itoo framework wrapper added by Kumaraswamy, minor improvements
Tested and working on Android 7 with Google Calendar notifications (when they actually work and don't disappear after 10 seconds). Like the fact that you have a record of all the notifications that come through.
I have created the example project in the link above and it seems the service starts
but I do not get any indication of notifications either for texts to the device or push notifications from Reolink
my desire is to see a notification from Reolink and do something.
In the Description in the link above it says
Required permissions: android.permission.BIND_NOTIFICATION_LISTENER_SERVICE
I cannot work out how to enable/turn it on/get that permission ?????
When I run the app and click Start I get a Notification access screen and select the notifications app
If I click Check it responds Service already has started
so it seems I have least started the Service
In Settings >Apps>notifications
Permissions says No permissions required
click on that and there is no option to turn anything on
Question:
how or where can I enable android.permission.BIND_NOTIFICATION_LISTENER_SERVICE
I initially did it from scratch using the image in the pdf and have just now downloaded and run the aia file, my original try did not have the filter in it. So the AIA file loads up compiles and runs but still does not see my Reolink notifications.
I tried changing the filter string to include Reolink,door, hoping that might trigger a hit but no luck.
Reolink notifications as seen on the cell phone are
Reolink 7.05am
Camera Alert
door bell has detected motion
Which device are you using for your tests? Samsung A20 Android 11
I had thought that the TaifunNotificationListener had access to the "Notifications" that are raised by the cell phone, Incoming calls, incoming Push notifications, etc, maybe I misunderstand???
My desire is to capture the Push notification from my Reolink NVR. Currently I can intercept them with a Automate for Android script but I wanted to use App Inventor rather than Automate.
the filter is by package name, so you should add the package name of that app
let me suggest you to first try a test without filter to see if you then get a notification... this also to find out the package name... then do another test including filter
yes exactly
but you should filter correctly, else nothing will be shown
Taifun, you said
let me suggest you to first try a test without filter to see if you then get a notification.
Well I did that and I got a list of notifications then had a text sent to the phone and triggered some reolink notifications and did a get again and neither the phone or reolink messages appeared
did a screen capture and copied some files and another get and got some more messages
still no notification for phone or reolink
this permission is not required to run the service
the example app just works fine for me on Samsung Galaxy A54 running Android 13
How did you set the package name filter? It looks like you are using the package name filter com.andoid.systemui...
As test remove all filter to get all notifications. If you get that running, then filter for the package name you are interested in
put the app into the background
sent some whats app messages to the phone
still got the same notifications plus another hundred or so as I had my phone on charge overnight
then changed the set TaifunNotificationListener PackageNamesFilter
build reinstall and run again
Removed the set statement completely - had no effect
put back the set statement changed the input to a sting " " - had no effect
changed the input to "test" - had no effect
put back the set statement changed the input back to txtbPackageNamesFilter Text "test" - had no effect
still only getting the android and com.android.systemmui messages
it is as if the PackageNamesFilter was set at the first succesful instance of running the program and it cannot be changed - why that would happen goodness only knows
I am very happy to continue to try and resolve this issue, but, it is not critical to what I am doing, I have an alternative method to get the notifications using Automate for IT, which sees the notification I am after and the sends a text to the phone which I then action with my MIT App Inventor app.
You can change the filter only before starting the service... while it is running to change the filter does not have any effect... you can click Check to see if the service is running
Uninstall your current version
Rebuild the test project as it is and install it
Open the app and remove all filters
Click Start, enable notification access for the app and click Allow
Close the app
Let some notifications come
Open the app and check what has been stored
Apart form the program initially having a filter set which was blocking my messages I was focused on the Get button.
The Get button can create a huge great list of things and if the filter string is wrong then of course the messages your looking for don't appear in the list.
In my screwing around I sent a text message and it magically appeared on my phone whilst I wasn't looking as a single item, much head scratching later, I believe I now understand what is going on.
I can receive my push notifications from Reolink and will look at porting some of this app over to my alarm monitor app.
I added a few buttons to your app whilst I was testing
set filter - writes filter string to - TaifunNotificationListener PackageNamesFilter
get filter - gets TaifunNotificationListener PackageNamesFilter - writes it to results label
clearDB tag - its not needed - but I want to cleared the DB and make sure everything was new -
refresh - erases the results label
Thank you very much for your support !
Cheers
in the above the filter textbox had been erased and then [set] PackageNamesFilter = ""