-
Notifications
You must be signed in to change notification settings - Fork 5
Frequently Asked Questions
Yes, Android does have some built-in notification management options like categories and DND. However...
- Many apps do not correctly categorize their notifications, often sending ads through the same category as important security alerts.
- Notifications from the system or about on-going events are exempt from Android's built-in notification management.
- There is no ability to silence notifications based on keywords or specific content.
Hence, NotiFilter!
No, NotiFilter does not require root access to function.
NotiFilter requires the following permissions:
- BIND_NOTIFICATION_LISTENER_SERVICE - to listen and react to notifications
- QUERY_ALL_PACKAGES - to search through installed apps while adding filters
Additionally, the following permissions are included in the app manifest but only utilized when triggered by the user:
-
BIND_ACCESSIBILITY_SERVICE - to execute
TAP_NOTIFICATIONactions, if any -
POST_NOTIFICATIONS: to execute
ALERTactions, if any -
ACCESS_NOTIFICATION_POLICY: to execute
DISTURBactions, if any -
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS - to execute
DISMISS_STALEactions, if any - FOREGROUND_SERVICE_SPECIAL_USE - to optionally promote to the core service to foreground, avoiding aggressive OS optimizations
Other permissions may be used by libraries to manage tasks, such as widget updates.
Google Play Protect intends to keep inexperienced users safe from installing malicious apps. Here is (probably) why its algorithms don't trust NotiFilter:
- Permissions: The permissions NotiFilter uses (see above) are often used by spyware/adware apps.
- Why you are safe: NotiFilter doesn't have network access, and all required permissions correspond to the app's core functionality.
- Import/Export: The filter import/export feature uses raw JSON files, which could potentially be used to deliver malicious payloads. Plus, the libraries used for this are reflective and dynamic in nature.
- Why you are safe: The feature is opt-in and requires user action to function. The app is open-source, so anyone can verify that the app doesn't do anything except what is strictly necessary for the core functionality.
- Google: Google despises non-OEM apps that help users take control of their own device. Genuinely, a lot of Android APIs are being locked away from developers, even in sideloaded apps. Big Brother doesn't like competition.
- Why you are safe: Unlike Google, I don't own the world's largest advertising business. I wouldn't know what to do with your data even if I collected it.
Personally, I use NotiFilter to get rid of the following notifications:
- "Upcoming alarm" notifications from the Clock app.
- Daily notifications from the OEM that say "Software updates available".
- System notifications like "Charging", "Tubular is displaying over other apps", "PingOff can view and control your screen".
- Promotional notifications from e-commerce apps that don't allow disabling them directly.
Caution
This is a very bad idea. It may lead to data loss.
You can use the regex pattern .* to match every notification from the selected app.
Starting with a simple system and adding complexity (as per user requirements/demands) is difficult: I would have to design and test the rules of this new string-matching system myself. Also, it would (probably) be pretty useless outside of this one app. Using regex—a system that has been designed well + tested in the field for years + is known to many users already—allows me to focus on the actual execution-logic of the app.
When I first decided to go with regex, I thought: "Surely this is overkill. No one's gonna use complex patterns to block notifications. It's probably just |, ., *, ^, and $ that will see any use." But nope! The very first issues included patterns that used regex features I didn't even know about. (The issues were unrelated to the patterns, but the users included them anyway.) Now, because NotiFilter has no analytics, I can't know the percentage of users who are using complex patterns, but I think overall it's beneficial to support advanced users, no matter how few of them there are.
Also, learning regex can help when trying out other projects like FileFlow 😉
Also-also, I wanted to avoid xkcd:927.