Deutsch | English | Änderungsprotokoll | TODO
Ein Knopf auf dem Handy, der Hilfe holt. Für den Fall, dass ein Angehöriger – der Sohn, die Tochter, der Nachbar – ein Handy aus der Ferne warten soll, und dass der Weg dorthin bisher an genau den Schritten scheitert, die der hilfsbedürftige Mensch nicht gehen kann.
Dieses Projekt ist in Zusammenarbeit mit Claude entstanden.
So läuft es heute: Die Mutter merkt, dass etwas nicht geht. Sie ruft an. Sie erklärt, so gut es geht. Der Sohn sagt „öffne mal die Fernwartung". Sie sucht das Symbol. „Lies mir die Kennung vor." Neun Ziffern. „Und jetzt das Passwort." Dann drei Systemdialoge, die bestätigt werden müssen.
Genau dort bricht es ab.
Ein Knopf. Sie tippt darauf, beim Sohn klingelt das Telefon. Die Nummer steht fest hinterlegt, es gibt nichts auszuwählen und nichts vorzulesen. Den Knopf gibt es dreifach: in der App, als bildschirmbreiter Balken auf dem Startbildschirm („Hilfe von Stephan") und als Kachel in den Schnelleinstellungen – Letztere erreicht man auch dann, wenn eine fremde App klemmt und der Startbildschirm außer Reichweite ist.
Ein zweiter Knopf öffnet die Fernhilfe, damit sie nicht gesucht werden muss.
Ein Zustandsbericht steht darunter, in Sätzen statt in Zahlen: „Das Handy ist stumm gestellt." „Der Speicher ist fast voll, nur noch 500 MB frei." „Seit 15 Tagen kein Neustart."
Der Bericht wird angezeigt und nicht verschickt. Das ist kein Mangel, sondern der Grund, warum die App ohne Server, ohne Konto und ohne eine einzige Netzwerkverbindung auskommt: Der Helfer sieht den Bildschirm ohnehin, sobald die Fernhilfe läuft – also liest er ihn dort.
Eine Einrichtung, die sich selbst prüft. Jeder Schritt öffnet die Systemseite, auf der er stattfindet, statt zu beschreiben, wo ein Schalter liegt – Menüpfade heißen bei Samsung, Xiaomi und Motorola jeweils anders, ein Intent trifft überall. Ein Haken steht nur da, wo die App wirklich nachgesehen hat; ein Fragezeichen heißt, dass sie es nicht kann.
Es steuert nichts fern und sieht keinen Bildschirm. Das macht ein eigenes Programm, und HANDYHelfer kennt vier davon.
Das nachzubauen wäre aussichtslos: Seit Android 14 verlangt MediaProjection
für jede Sitzung eine neue Zustimmung; ein zwischengespeichertes Intent
wirft eine SecurityException. Seit Android 15 QPR1 bricht die Aufnahme ab,
sobald der Bildschirm sperrt. Daran scheitert auch TeamViewer.
Diese Erkenntnis hat einen ganzen Tag am lebenden Gerät gekostet, deshalb steht sie hier und nicht im Kleingedruckten:
Quelloffen und wirklich fernsteuern schließen sich derzeit aus.
Android lässt den Bedienhilfe-Dienst – ohne den niemand aus der Ferne tippen kann – nur für Apps aus Google Play zu (bzw. der HUAWEI AppGallery). Alles andere bekommt den Schalter ausgegraut, mit dem Hinweis „Gesteuert durch eingeschränkte Einstellung". Auf einem Motorola edge 50 neo mit Android 16 fehlt sogar der Menüpunkt, mit dem sich das aufheben ließe – weder vor noch nach der Anforderung durch die App, und eine Installation über F-Droid ändert daran nichts.
Daraus wird eine Zwickmühle, die keine App auflöst:
- Außerhalb von Play sperrt Android die Steuerung.
- Innerhalb von Play muss der Anbieter Googles Genehmigungsverfahren durchlaufen, mit Formular und Demo-Video. Firmen tun das; kleine quelloffene Projekte nicht. HopToDesk schreibt deshalb in der eigenen Dokumentation, dass seine Play-Fassung nur zusehen kann.
| Fernhilfe | quelloffen | kann steuern |
|---|---|---|
| RustDesk | ja | nein – aus Play zurückgezogen |
| HopToDesk | ja | nein – darf es in Play nicht |
| TeamViewer QuickSupport | nein | ja, mit Universal Add-On |
| AnyDesk | nein | ja, mit Zusatzmodul |
HANDYHelfer sagt das in der Einrichtung offen: Wo nur Zusehen möglich ist, steht das da – statt eines Schalters, den Android ausgegraut lässt.
Eine Fernwartung allein zeigt der Mutter eine neunstellige Zahl und fragt, ob sie verbinden will. Sie kann nicht erkennen, ob da ihr Sohn dran ist oder der freundliche Herr, der vorher angerufen hat. Genau diese Masche steht bei Polizeiberatung und Watchlist Internet namentlich mit RustDesk, AnyDesk und TeamViewer im Warntext. Laut IC3-Report 2025 tragen Menschen über 60 rund 37 % aller Betrugsschäden. RustDesk hat seine Android-App 2024 selbst aus dem Play Store genommen, weil Betrüger sie missbraucht haben.
Deshalb:
- Genau ein Helfer. Es gibt kein Eingabefeld für eine fremde Nummer – also lässt sich am Telefon auch niemand zu einer überreden.
- Die Einrichtung erklärt, warum. Wer die Begründung einmal gelesen hat, wird bei genau dieser Bitte stutzig.
- Ein Protokoll am Gerät, im Klartext, nicht löschbar aus der App heraus.
- Keine Sicherung in die Cloud (
allowBackup="false") – der Helfer wandert nicht mit auf ein anderes Gerät.
Die Anforderungsliste musste nicht erfunden werden; sie steht seit Jahren beim LfDI Baden-Württemberg und im BSI-Baustein OPS.1.2.5.
| Berechtigung | Wofür | Ohne sie |
|---|---|---|
CALL_PHONE |
die hinterlegte Nummer direkt wählen | die Nummer steht im Telefon, es fehlt ein Tipp |
READ_PHONE_STATE |
bei zwei SIM-Karten die richtige mitgeben | Android fragt bei jedem Anruf nach |
ACCESS_NETWORK_STATE |
ob überhaupt eine Verbindung besteht | – (normal, kein Dialog) |
Bewusst nicht dabei: BIND_ACCESSIBILITY_SERVICE, alles rund um
MediaProjection, QUERY_ALL_PACKAGES, REQUEST_INSTALL_PACKAGES, Standort,
Kontakte, Kamera, Mikrofon.
Statt QUERY_ALL_PACKAGES stehen fünf Paketnamen unter <queries> im Manifest –
die vier Fernhilfen und das TeamViewer-Zusatzpaket. Die Berechtigung, die ganze
App-Liste zu lesen, braucht bei Google eine Sondergenehmigung und wäre für
diesen Zweck nicht zu rechtfertigen.
Fernhilfe hat zwei Seiten, und auf beiden läuft etwas anderes. Das ist die häufigste Verwechslung: QuickSupport ist die Seite, die Hilfe empfängt – wer hilft, braucht die steuernde Gegenseite.
| Programm | Woher | Wofür |
|---|---|---|
| HANDYHelfer | Datei von hier | der Knopf, der Hilfe holt |
| TeamViewer QuickSupport | Play Store | lässt den Helfer auf den Bildschirm sehen |
| TeamViewer Universal Add-On | Play Store | lässt ihn auch tippen und wischen |
Die beiden TeamViewer-Pakete müssen aus dem Play Store kommen. Als Datei heruntergeladen sperrt Android die Eingabesteuerung, und der Helfer kann nur zusehen – die Begründung steht weiter oben. HANDYHelfer selbst darf als Datei kommen; es braucht die Bedienungshilfen nicht.
Den Weg dorthin muss niemand suchen: Der Assistent in HANDYHelfer öffnet die richtigen Store-Seiten und prüft danach selbst, ob es geklappt hat.
| Programm | Woher | Wann |
|---|---|---|
| TeamViewer Remote Control | Play Store | wenn du vom Handy aus hilfst |
| TeamViewer für Linux, Windows oder Mac | teamviewer.com | wenn du vom Rechner aus hilfst |
HANDYHelfer gehört nicht auf das Gerät des Helfers. Es ist nur für die Seite, die Hilfe holt.
Für private Hilfe in der Familie ist TeamViewer kostenlos. Ein Konto ist nicht nötig, lohnt sich aber: Damit lässt sich das Gerät im Adressbuch speichern, und die neunstellige Kennung muss nicht bei jeder Sitzung erfragt werden.
Die Bedienungshilfe freizuschalten geht nicht aus der Ferne – das lässt Android nicht zu, und keine App kann daran etwas ändern. Rechne für die Ersteinrichtung mit zwanzig Minuten vor Ort. Danach läuft es dauerhaft.
Die fertige Datei liegt bei den Veröffentlichungen. Dieser Link zeigt immer auf die neueste Fassung:
https://github.com/Stephan-Lefty/HANDYHelfer/releases/latest/download/HANDYHelfer.apk
Auf dem Handy abtippen will den niemand – dafür ist der Code da. Abfotografieren, und der Browser lädt die Datei:
Beim ersten Mal fragt Android, ob dieser Browser Programme installieren darf. Das ist die normale Rückfrage bei allem, was nicht aus dem Play Store kommt.
Ein Hinweis, der hier wichtig ist: Eine so installierte App bekommt von Android die Bedienungshilfen gesperrt. Für HANDYHelfer ist das egal – es braucht sie nicht. Für die Fernhilfe ist es entscheidend, und genau deshalb führt die Einrichtung dort in den Play Store. Die Begründung steht weiter oben.
./gradlew assembleDebug
Die APK liegt danach unter app/build/outputs/apk/debug/.
Gebraucht wird ein Android SDK mit API 36 und ein JDK 17 – nicht das
Standard-JDK, falls das neuer ist: Gradle 8.14 stolpert über vierteilige
Versionsnummern wie 26.0.2.1.
MainActivity der Startbildschirm: zwei Knöpfe, der Bericht
AssistentActivity die Einrichtung, die sich selbst prüft
├── Assistent welche Schritte offen sind (rein, testbar)
├── Systemseiten öffnet die richtige Systemseite
├── Fernhilfeart die vier Programme und was sie können
├── Diagnose trägt den Gerätezustand zusammen
├── Regeln macht daraus Befunde (rein, testbar)
├── Karten welche SIM-Karte den Anruf macht
├── Helfer der eine hinterlegte Helfer
└── Protokoll was wann geschehen ist
Die Trennung zwischen Diagnose und Regeln ist der Kern: Regeln kennt kein
Android und keine Zeichenketten, sondern nur die Datenklasse Zustand. Deshalb
lässt sich ein fast voller Speicher, ein zwei Wochen nicht neu gestartetes Gerät
oder ein abgelaufenes Android im Test herstellen – am Telefon wäre das jeweils
eine Stunde Arbeit.
Apache 2.0, siehe LICENSE.
Erste Fassung, am Gerät erprobt (Motorola edge 50 neo, Android 16). Der Knopf ruft an, der Zustandsbericht prüft dreizehn Dinge, die Einrichtung führt durch neun Schritte. Offene Punkte stehen in TODO.md.
