🇬🇧 English: README.md (this page) · 🇩🇪 Deutsch: README.de.md
A standalone Android device-search app: full-text search across files (TXT/MD, Office DOCX/XLSX/PPTX and legacy DOC/XLS/PPT, OpenDocument ODT/ODS/ODP, PDF, EPUB/FB2, MOBI/AZW3, and optionally the contents of ZIP/7z/TAR archives), plus contacts, calendar events, SMS, the call log and captured system notifications — all in one search field.
Capture & search your notifications (per-app, opt-in). Sucher can record incoming system notifications and keep them searchable losslessly — even after you've swiped them away. That means you can still find, days later, a parcel tracking number, a 2FA/verification code, an order confirmation or any short message that would otherwise be gone. You decide per app whose notifications are captured; the full text (not just the one line) is stored, so every field stays searchable and can be evaluated later. Already-captured notifications remain searchable even if you revoke notification access, and can be deleted anytime. (Opt-in via Android's notification access.)
Split off from EdgeTab on 2026-09-24, where it started as a tab before turning out to deserve its own app (different permission profile, different usage pattern — open it directly, search, done, no always-on background service).
Search results can be narrowed further: after any search, "🔎 Nur in diesen N Treffern weitersuchen" restricts every following search — simple or advanced, with completely different terms or fields — to just that result set, until cleared again. Repeatable, so a broad first search can be narrowed down step by step instead of building one giant combined query.
- Android 10 or newer (
minSdkVersion29), targettargetSdkVersion34 (Android 14). - Läuft ab Android 10 aufwärts (Mindest-SDK 29), Ziel-SDK 34 (Android 14).
![]() Suche |
![]() Volltext-Treffer |
![]() Erweiterte Suche |
![]() Ergebnisse eingrenzen |
| Format | Method | Notes |
|---|---|---|
| Plain text: TXT, MD/Markdown, CSV, LOG, JSON, XML, SRT, INI, YAML/YML | direct read | |
| DOCX/XLSX/PPTX | ZIP+XML via Android's built-in XmlPullParser |
no Apache POI needed |
| OpenDocument ODT/ODS/ODP/ODG/ODF + templates OTT/OTS/OTP | same (meta.xml + content.xml) | LibreOffice/OpenOffice |
| EPUB/FB2 | same | |
| PDFBox-Android | encrypted PDFs: filename only, not decrypted | |
| DOC/XLS/PPT (legacy) | Apache POI (poi+poi-scratchpad only, no poi-ooxml) |
|
| MOBI/AZW3/AZW/PRC | hand-rolled PalmDOC/MOBI6 reader | HUFF/CDIC-compressed books: filename only; DRM books: filename only, by design |
| CBZ | filename + ComicInfo.xml metadata if present |
|
| CBR | filename only | no RAR reader vendored, not worth it just for metadata |
| ZIP/7z/TAR(.gz/.bz2/.xz), single .gz/.bz2/.xz | contents indexed (each inner document extracted) | optional, off by default ("search archives"); RAR filename only (no free GPL-compatible decompressor) |
Every file gets a metadata row regardless of format, so name/type/date search covers everything, not just the table above.
Besides files, Sucher also searches contacts, calendar events, SMS and the
call log (each a separate result category, queried live — nothing stored),
and captured notifications (opt-in via notification access, enabled per
app; already-captured ones stay searchable even after the permission is
revoked, and can be deleted under "Permissions"). Each captured notification is
stored losslessly —
every field it carried, via the shared library's Notifications.toJson, not
just title and one line — so the full text is searchable and any field can be
evaluated later. SMS and call log need their own permissions, granted on
demand.
No Gradle — same raw Android SDK command-line build as EdgeTab. You need:
- Android SDK (
platforms;android-34,build-tools;34.0.0,platform-tools) - A JDK (11+)
- A signing keystore (this project reuses EdgeTab's own — see its README for how to generate one if you don't have it)
SDK=/path/to/android/sdk
BT="$SDK/build-tools/34.0.0"
AJAR="$SDK/platforms/android-34/android.jar"
KEYSTORE=/path/to/keystore.p12
rm -rf build && mkdir -p build/gen build/obj
"$BT/aapt2" compile --dir res -o build/res.zip
# -A assets is required: PDFBox-Android's PDFBoxResourceLoader reads its
# font/glyph data from assets/com/tom_roush/... at runtime, and the in-app
# changelog (assets/CHANGELOG.md) is loaded the same way. Earlier builds
# accidentally omitted this flag - PDF rendering still worked (wrapped in
# try/catch) but silently without proper font metrics.
"$BT/aapt2" link -o build/base.apk -I "$AJAR" --manifest AndroidManifest.xml \
--java build/gen -R build/res.zip -A assets --auto-add-overlay \
--min-sdk-version 29 --target-sdk-version 34
# Gemeinsame Klassen liegen in den Git-Submodulen common/ (Diagnose, Einstellungs-
# Sicherung, Benachrichtigungs-Kern u. a.) und docextract/ (Format-Extraktoren) -
# vor dem Bauen einmal `git submodule update --init` ausfuehren; beide src/ werden
# mitkompiliert.
javac --release 11 -d build/obj -classpath "$AJAR:$(echo libs/*.jar | tr ' ' ':')" \
$(find src build/gen common/src docextract/src -name '*.java' 2>/dev/null)
# module-info.class (JPMS) and META-INF/versions/ (multi-release jar classes,
# e.g. log4j-api ships a Java 9 variant of Base64Util) both confuse d8 if left
# in - the former isn't a real class, the latter causes "defined multiple
# times" duplicate-class errors since d8 sees both variants unversioned.
(cd build/obj && for j in ../../libs/*.jar; do jar xf "$j"; done && find . -name 'module-info.class' -delete && rm -rf META-INF/versions)
"$BT/d8" --min-api 29 --lib "$AJAR" --output build/ $(find build/obj -name '*.class')
cp build/base.apk build/unsigned.apk
(cd build && zip -qj unsigned.apk classes*.dex)
"$BT/zipalign" -f -p 4 build/unsigned.apk build/aligned.apk
"$BT/apksigner" sign --ks "$KEYSTORE" --ks-type PKCS12 --out build/Sucher.apk build/aligned.apkA companion to EdgeTab for the same reason EdgeTab exists: the standard Android search experience doesn't reach into file contents, and no single free app covers Office+PDF+e-book+comic-metadata search without turning into a 19MB ad-supported bundle. Free/open-source groundwork, same author.
- English: User guide · Flyer
- Deutsch: Anleitung · Werbung
GNU General Public License v3.0 (or later) — see LICENSE. Bundled
third-party libraries (Apache POI, PdfBox-Android, Apache Commons,
Log4j API, SparseBitSet, curvesapi) remain under their own permissive
licenses (Apache 2.0 / BSD-3-Clause), both compatible with GPLv3 —
versions, links and the required notices are in
THIRD-PARTY-NOTICES.md.



