Blau beleuchtete Tastatur
// PROJEKT · ANDROID-APP
App-Icon: aufgeschlagenes Buch mit vier farbigen Plattform-Punkten

Social Reader

● In Nutzung · wird laufend verbessert

Eine private Android-App, mit der ich Reddit, X, Facebook und Instagram lesen kann, ohne ständige „Antworten"- und „Posten"-Buttons und mit weniger Werbung. Selbst gebaut, weil ich die Kontrolle über meine Accounts und meine Ruhe beim Lesen behalten wollte.

Flutter / Dart webview_flutter JavaScript-Injection Android mit KI-Unterstützung

01Warum überhaupt?

Ich nutze Reddit und X regelmäßig, Facebook und Instagram gelegentlich, vor allem, um Familieninhalte zu lesen und in Familien-Chats erreichbar zu sein. Mein Nutzungsverhalten ist eher passiv: mal ein Like, aber kein Posten oder Kommentieren.

Vorher hatte ich eine fremde „Social-Browser"-App („Friendly") genutzt und damit Account-Probleme bekommen. Das war der Auslöser, eine eigene Lösung zu bauen, mit voller Kontrolle über Privatsphäre und Login-Sicherheit, ohne dass meine Zugangsdaten durch fremde Server laufen.

02Wie es funktioniert

Die App ist mit Flutter gebaut und zeigt die vier Netzwerke jeweils in einer eigenen WebView. Anfangs lagen alle vier Tabs dauerhaft in einem IndexedStack, damit die angemeldeten Sitzungen und die Feed-Position beim Tab-Wechsel erhalten bleiben. Das hatte einen praktischen Vorteil (man konnte dort weitermachen, wo man zuletzt war), aber auch einen handfesten Nachteil: Vier gleichzeitig lebende Webansichten haben den Arbeitsspeicher volllaufen lassen und mein damaliges S22 Ultra spürbar warm werden lassen. Deshalb halte ich jetzt nur noch den aktiven Tab live; die anderen werden erst beim Umschalten geladen. Das kostet den Komfort, exakt an der alten Scroll-Position weiterzulesen, hält das Gerät dafür kühl und den RAM im Rahmen. Unten sitzt eine schlanke, nur 44 px hohe Icon-Leiste zum Umschalten.

4 Tabs, eine Oberfläche

Reddit, X, Facebook und Instagram in einer App, kein Wechsel nötig. Aktiv gehalten wird der laufende Tab, schonend für RAM und Temperatur.

Buttons & Werbung ausblenden

Per JavaScript werden Compose-Buttons, Kommentarfelder, Stories und Werbeblöcke versteckt.

Logins bleiben lokal

Die Anmeldungen liegen nur auf dem Gerät. Nach dem Start entsperrt ein Fingerabdruck die App.

Bilder speichern

Bilder lassen sich per langem Druck herunterladen. Video-Download habe ich bewusst wieder entfernt (siehe unten).

03Das Ausblenden im Detail

Der spannendste Teil: unerwünschte Elemente verschwinden zu lassen, ohne die Seiten kaputtzumachen. Umgesetzt über gezielte JavaScript-Injection pro Plattform:

Damit Facebook den Messenger direkt in der WebView zulässt (statt „App öffnen"), bekommt es einen Desktop-User-Agent; die anderen laufen mit einem mobilen Chrome-User-Agent. intent://-Aufrufe für den Messenger werden abgefangen und auf facebook.com/messages umgeleitet.

04Herausforderungen & Lösungen

Problem: Instagram-Blackout

Ein früher, zu aggressiver Ausblend-Versuch bei Instagram hat versehentlich die ganze Seite schwarz gemacht: Die Regel hat einen Container erwischt, der den gesamten Feed enthielt.

Lösung: Feed-Schutzregel

Eine Guard-Funktion (srContainsFeed()) prüft vor jedem Ausblenden, ob ein Element den Feed/Artikel/Hauptbereich enthält. Wenn ja, wird es nicht versteckt. Seitdem bleibt der Feed sichtbar und nur der Ballast verschwindet.

Kompromiss: Lücken im Instagram-Feed

Bei Instagram wird zwar zuverlässig viel Werbung ausgeblendet, aber mit einem Nebeneffekt: Wo ein Werbeeintrag entfernt wird, bleibt im Feed eine Lücke. Man scrollt und sieht für ein, zwei Positionen kurz nichts (im Screenshot unten markiert). Instagram rendert den Feed offenbar mit festen Platzannahmen, sodass der Bereich nach dem Ausblenden nicht sauber nachrückt. Ich habe mich daran gewöhnt. Eine elegantere Lösung (die Lücke sauber kollabieren zu lassen) steht noch auf meiner Liste.

Detail: kurzes Aufblitzen bei den anderen drei

Bei Reddit, X und Facebook sieht man Post-Buttons oder Werbung für einen kurzen Moment noch, bevor sie nach knapp einer Sekunde verschwinden. Grund: Das Ausblenden greift erst, wenn die Elemente schon gerendert sind. Für mich ist das völlig okay, der Feed bleibt lesbar, und der kurze Moment stört den Lesefluss nicht wirklich.

Problem: Videos ließen sich nicht speichern

Bilder herunterzuladen war einfach; bei Videos kam nur „Stream kann nicht heruntergeladen werden", weil die echte Datei-URL im Seiten-Code versteckt ist.

Entscheidung: Video-Download verworfen

Ich hatte es zeitweise über einen kleinen fetch-/XHR-Patch versucht, der die MP4-Adressen aus den JSON-Antworten fischt (u. a. Facebooks browser_native_hd_url). In der Praxis war das aber zu fehleranfällig. Segmentierte Streams, ständig wechselnde Adressen und Tokens. Deshalb habe ich den Video-Download bewusst wieder entfernt. Für mich verschmerzbar: Der Download von Bildern klappt zuverlässig, und das reicht mir völlig.

Extra: Filter-Status-Anzeige

In den Einstellungen gibt es einen kleinen Checker, der pro Plattform ausliest, wie oft welche Filterregel gegriffen hat (grün/orange/grau). So sehe ich sofort, ob nach einem Update einer Plattform eine Regel nicht mehr passt.

05Stand & Ausblick

Die App läuft im Alltag stabil und ist für mich sehr gut nutzbar, nicht perfekt, aber genau das, was ich wollte. Da die Plattformen ihr Layout regelmäßig ändern, müssen die Filterregeln ab und zu nachgezogen werden; die Status-Anzeige hilft dabei. Es finden sich immer wieder kleine Verbesserungen.

Inzwischen habe ich die App signiert und den Gerätewechsel mitgemacht, vom S22 Ultra auf das neue S26 Ultra. Dort ließ sie sich problemlos installieren und läuft genauso wie zuvor.

Was noch offen ist

Das passt zu meiner Nutzung: Außer dem Facebook-Chat mit Familie und Freunden poste ich nichts, ich lese nur. Genau dafür ist die App gebaut.

Denkbare Erweiterungen

Die Struktur lässt sich leicht ausbauen. Man könnte weitere Plattformen ergänzen oder umgekehrt in den Einstellungen einzelne abwählen, bis hin zu „nur eine anzeigen, den Rest ausblenden", je nachdem, was man gerade möchte. Die Plattform-Schalter dafür gibt es schon, abgewählte Netzwerke tauchen dann weder in der Leiste auf noch werden sie geladen.

06Screenshots

Ein paar Eindrücke aus der App, vom Fingerabdruck-Start über die vier Plattformen bis zu den Einstellungen und der App-Info in Android. Die farbig markierten Bereiche zeigen, was die App verändert: die eigene Navigationsleiste, die bei X eingebaute Suche und die Feed-Lücke, wo Werbung ausgeblendet wurde. (Antippen zum Vergrößern.)

Vorläufig sind das schnelle Handyfotos vom Bildschirm. Bei Gelegenheit tausche ich sie gegen sauberere Aufnahmen. Es soll aber schon einmal etwas zum Anschauen da sein.

Hinweis: Rein privates Projekt für den Eigengebrauch. Die App greift auf die normalen Webversionen der Netzwerke zu; Zugangsdaten bleiben lokal auf dem Gerät.
← Zurück zu den Projekten