Current Version:
v1.0.6.7| Platform: Android 8.0+ (API 26+) | License: Open Source
A privacy-focused, zero-telemetry Android distraction and content blocker built with React Native and native Android Accessibility Services.
Important
Recommendation: Install the Debug Version First!
We strongly recommend installing and testing the Debug version (Blocker-release-debug-{VERSION}.apk) before installing the Release build.
- Test with 1-Minute Timers: The Debug build uses short 1-minute unlock delay timers, allowing you to freely explore, configure your custom blocklists, test focus schedules, and adjust settings without risk of accidentally locking yourself out.
- Upgrade When Ready: Once you have thoroughly tested the app and confirmed everything suits your exact needs, proceed to install the Release version (
Blocker-release-{VERSION}.apk), which enforces real 1 to 30 day delayed-unlock timers with strict anti-tamper security and no backdoors.
Warning
Play Protect Warning During Installation
Because Blocker is an open-source, sideloaded app that utilizes Android Accessibility Services and Device Administrator permissions for tamper resistance, Google Play Protect may warn or block installation:
- Quick Install: On the prompt, tap "More details" -> "Install anyway".
- If Blocked: Temporarily disable Play Protect during installation:
- Open Google Play Store -> tap your Profile Icon (top right) -> select Play Protect.
- Tap the Settings gear in the top right corner.
- Turn off "Scan apps with Play Protect".
- Install Blocker, then you can turn Play Protect back on once installation finishes.
Blocker runs entirely on-device: no remote DNS, no tracking servers, no telemetry, and no account required. It blocks distracting websites, full-screen short-form video players (YouTube Shorts, Instagram Reels, Facebook Reels), and adult domains across browsers and apps.
- Real-Time 1-Second Countdown Ticker & Anti-Tamper Delay Locks:
- Active delay unlock timers tick down visibly every second (
00:59→00:58… →00:00) driven by a shared, synchronized reactive state engine. - Strict countdown delays are enforced across Distraction Shields, Daily Schedule modifications, Focus Mode toggle-off, and Web/Keyword blocklist deletions whenever Protection Mode or Focus Mode is armed.
- Active delay unlock timers tick down visibly every second (
- Device Admin Smart Allow-Gate:
- Android's "Device admin apps" list screen can now be browsed and inspected freely. Users can activate and manage other administrator apps (e.g. Find My Device, Google Play Protect) without being kicked to Home.
- Attempting to deactivate Blocker's Device Administrator remains strictly blocked in 0ms.
- Exact Trigger Reporting in Popups & Floating HUD:
- Overlay reminders and floating HUD banners now display the exact blocked URL (e.g.
Blocked URL: m.example.com/ব্লককৃত লিংক: m.example.com) or restricted keyword phrase (Blocked Keyword: "phrase"/নিষিদ্ধ কীওয়ার্ড: "phrase").
- Overlay reminders and floating HUD banners now display the exact blocked URL (e.g.
- Soft Keyboard Auto-Scroll & Input Clearance:
- Configured
adjustResizesoft input mode andBringIntoViewRequesterwith IME padding on the Web & Keywords page, ensuring input fields smoothly scroll above the Android keyboard upon focus.
- Configured
- Default Content Hardening & GitHub Privacy Encryption:
- Bundled
redgifs.comand restricted terms (redgifs,futanari,pawg,erotic) directly into the default binary filtering engine. - Full end-to-end repository encryption (
encrypted-blocklistand base64 obfuscation) guarantees that no plaintext adult URLs or keywords are exposed when viewing repository files on GitHub.
- Bundled
- Surgical Distraction Ejection & Newsfeed Protection:
- Passive Facebook Newsfeed scrolling is 100% preserved. Full-screen Reels or video taps trigger an in-app Back action that returns the user straight to the Newsfeed without launcher ejections (
GLOBAL_ACTION_HOME). - Warning popups are completely silenced during short-form video blocking for a seamless, distraction-free flow.
- Passive Facebook Newsfeed scrolling is 100% preserved. Full-screen Reels or video taps trigger an in-app Back action that returns the user straight to the Newsfeed without launcher ejections (
- Auto-Close & Background Removal on Minimize:
- Minimized app tasks invoke
finishAndRemoveTask(), immediately clearing the app from Android Recents to prevent bypasses via the multitasking overview screen.
- Minimized app tasks invoke
- Bilingual Islamic Reminder Dialogs:
- Reverent Quranic verses and Hadiths available in authentic English and বাংলা, with dedicated language selection in Settings.
- Pomodoro Study Mode (Full Phone Lockdown): Seamlessly integrated into the Focus page with a segmented switcher.
- Customizable Cycles: Set study focus intervals (15m to 180m), rest breaks (3m to 15m), and session rounds (1 to 6).
- Aggressive Phone Lockdown: All apps, home launcher, settings, and navigation are blocked during study sessions, returning directly to the running study timer within milliseconds.
- Quick Settings & Status Bar Shield: Automatically collapses notification shade pulls (
StatusBarManager.collapsePanels()), preventing unauthorized toggling of Wi-Fi, mobile data, or airplane mode. - Complete Silencing & Do Not Disturb: Automatically activates Do Not Disturb (
INTERRUPTION_FILTER_NONE) and zeroes ringtone, media, notification, and system volume streams, cleanly restoring prior volumes upon completion. - Interactive Wi-Fi Controls: Monitor Wi-Fi status and toggle network connectivity on demand directly within Blocker without breaking lockdown.
- Display Standby Friendly: Safely turn off the screen using the physical power button; unlocking returns straight to the active timer.
- Emergency Safeguard: Dialer and emergency telecom services are explicitly whitelisted for critical safety.
- Anti-Tamper & Clock Manipulation Defense:
- Date & Time Tamper Shield: Dual-layer protection (instant window interception + continuous screen text scanner) prevents users from manipulating device date/time in Android Settings to prematurely expire delayed unlock timers.
- System Settings Guard: Strictly blocks access to Developer Options, Device Administrator settings, and App Info / Force Stop / Uninstall screens.
- Debugging Lockdown: Automatically detects and disables USB and Wireless debugging if enabled.
- Hardened Content & Distraction Shields:
- URL User-Info Domain Spoofing Defense: Hardened domain extraction parser (
hostOf) strips user credentials (user@host) and decodes percent-encoded characters, eliminating bypasses likehttps://safe.org@blocked-domain.com. - Granular Distraction Shields: Independent toggles for YouTube Shorts, Instagram Reels, and Facebook Reels without breaking main app feeds.
- Offline Content Database: Fast, local, obfuscated adult domain database with custom domain blocklists and keyword whitelisting.
- URL User-Info Domain Spoofing Defense: Hardened domain extraction parser (
- In-App Updater & Security Verification:
- Automated Update Checks: Checks for official GitHub releases on an active 2-hour cycle (with 24-hour backoff if an update is pending) with in-app changelog viewer and direct APK installer.
- Package Identity Verification: Enforces strict package name validation (
pi.packageName == rc.packageName) before invoking Android package installer on downloaded APKs. - URL Sanitization: Release links are strictly validated against official GitHub repositories.
- Automatic Storage Cleanup: Purges cached APK files immediately upon successful installation.
- Delayed Unlock Timers: Any attempt to weaken protections, unblock apps, or shorten timers requires waiting out an unbreakable delay of 24 hours to 30 days.
Blocker/
├── source/ # Source files (working directory)
│ ├── App.tsx # Main entry point and bottom tab navigation
│ ├── android/ # Native Kotlin code
│ │ ├── AccessibilityService.kt # System-wide window tracker & content interceptor
│ │ ├── BlockerNativeModule.kt # React Native bridge, delay locks & APK updater
│ │ ├── DeviceAdmin.kt # Device Administrator receiver
│ ├── src/ # React Native UI & Business logic
│ │ ├── screens/ # Screens (HomeScreen, AppBlockerScreen, BlocklistScreen, FocusScreen, SettingsScreen, UpdateModal)
│ │ ├── services/ # State management (ProtectionManager, BlocklistEngine, UpdateService)
│ │ ├── hooks/ # Reactive hooks (useProtection, useAppUpdate)
│ │ ├── native/ # TypeScript bridge definitions (BlockerNative)
│ │ └── data/ # Static data (appVersion, categories, userLists)
├── blocklists/ # Blocklist source files
│ ├── block-list.md # Obfuscated adult domain, keyword, and TLD database
│ ├── my_list.txt # Plaintext user additions (1 per line)
│ └── whitelist.txt # Plaintext whitelist entries (1 per line)
├── assets/ # App icon source artwork (app-icon-source.png)
├── build_apk.sh # Main automated build script
├── 05_install_on_phone.sh # ADB install script for connected device
├── import_lists.py # Blocklist parser & userLists generator
├── patch_android.py # Copies source into React Native project and patches Android files
├── set_version.py # Auto-increments version and build numbers
└── env.sh # Environment variables (Android SDK, Java paths)
Building Blocker requires:
- Operating System: Linux (Arch Linux recommended; Debian/Ubuntu supported with equivalent packages)
- Java Development Kit: JDK 17 (OpenJDK 17)
- Node.js: Node.js LTS (v18 or v20) and
npm - Android SDK & Build Tools:
- Android SDK Platform 34 (
platforms;android-34) - Build Tools 34.0.0 (
build-tools;34.0.0) - NDK 25.1.8937393 (
ndk;25.1.8937393) - CMake 3.22.1 (
cmake;3.22.1) - Android Command-Line Tools (
cmdline-tools;latest) - Android Platform Tools (
adb)
- Android SDK Platform 34 (
- Python: Python 3.8+ with standard library (used by build helper scripts)
- System Utilities:
git,unzip,bash
sudo pacman -S --needed jdk17-openjdk nodejs npm android-tools unzip git python
sudo archlinux-java set java-17-openjdksudo apt update
sudo apt install -y openjdk-17-jdk nodejs npm adb unzip git python3
sudo update-alternatives --set java /usr/lib/jvm/java-17-openjdk-amd64/bin/javaThe primary build pipeline is controlled by build_apk.sh.
Ensure env.sh points to your installed Android SDK and Java 17 locations:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export ANDROID_HOME="$HERE/Android/Sdk"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
export PATH="$JAVA_HOME/bin:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"If you do not have the Android SDK command-line tools yet, place commandlinetools-linux-*_latest.zip directly in the Blocker-App directory (or ~/Downloads). You can also place android-ndk-r25b-linux.zip and gradle-8.3-all.zip in Blocker-App to skip large downloads over the network. The build script automatically detects and sets them up.
./build_apk.sh debug- Uses 1-minute delay timers for protection unlocks so you do not get locked out while testing.
- Automatically imports blocklists, increments the build number, patches React Native files, and compiles.
- Outputs the binary to:
apk/Blocker-debug-{build_number}.apk.
./build_apk.sh release- Enforces real 1 to 30 day delayed-unlock timers.
- Strict anti-tamper security: settings changes cannot be bypassed without waiting the full duration.
- Outputs the binary to:
apk/Blocker-release-{build_number}.apk.
- Copy or download the compiled APK to your Android device.
- Open the file to start installation.
- If Google Play Protect blocks the install:
- Tap "More details" -> "Install anyway".
- If blocked completely, open Google Play Store -> tap your Profile (top right) -> Play Protect -> tap Settings -> temporarily turn off "Scan apps with Play Protect" while installing. You can turn it back on after installation.
All application development takes place under the source/ folder:
- UI Screens: Edit
source/src/screens/(HomeScreen.tsx,SettingsScreen.tsx,FocusScreen.tsx,UpdateModal.tsx, etc.). - Component Styling: Edit
source/src/ui.tsxfor shared components, colors, and design system. - Native Android Interception: Edit
source/android/AccessibilityService.ktto modify window state detection, URL bar checking, or anti-tamper logic. - Native Modules & Updater: Edit
source/android/BlockerNativeModule.ktto modify Kotlin methods exposed to React Native.
Important: Do not edit directly inside project/ (or $BLOCKER_DIR) - that directory is the build target. Always edit inside source/. The build script copies files from source/ into project/ (or $BLOCKER_DIR) automatically during the build process.
To manually sync changes from source/ into the build target without a full rebuild:
python3 patch_android.py ~/Blocker source- Custom Additions: Open
blocklists/my_list.txtand add one domain or keyword per line. - Whitelist Items: Open
blocklists/whitelist.txtand add entries (e.g., words likecameraoressexthat contain false-positive substrings). - After updating text lists, regenerate the TypeScript database:
python3 import_lists.py
- Replace
assets/app-icon-source.pngwith your desired PNG image (recommended 1024x1024). - Regenerate all Android mipmap icon resolutions:
python3 generate_icons.py python3 embed_icon.py
Once installed on a physical device, Blocker requires the following permissions to provide full protection:
- Accessibility Service: Required to inspect active window activities, detect open URL bars in web browsers, scan text for blocked keywords, detect short-form video players (YouTube Shorts, Reels), and enforce Study Mode phone lockdown.
- Display Over Other Apps (Overlay): Used to display the non-intrusive blocked notification banner and reminder screen.
- Usage Access (Package Usage Stats): Required to calculate daily per-app usage time and enforce daily app limits.
- Device Administrator: Prevents immediate uninstallation while Protection Mode is active.
- (Optional) Do Not Disturb (Notification Policy Access): Allows Pomodoro Study Mode to automatically suppress all notifications, alerts, and ringtones during focus sessions.
- (Optional) Write Secure Settings: Allows Blocker to automatically and instantly turn off USB & Wireless debugging if enabled (
adb shell pm grant com.blocker android.permission.WRITE_SECURE_SETTINGS).
For complete release notes, changelogs, and historical version details, see RELEASE_NOTES.md.
- Developer: Shell Ninja









