Prd/components/dialer-patch/patches/0006-manifest-cleartext-lan-backend.patch
Lucy Doupalů be9f14ce34 Helpdesk - operator console + patched GrapheneOS Dialer for call handling
A small helpdesk system: an office Pixel running a patched GrapheneOS Dialer
answers technician calls, records both call legs as separate channels, and a
Ruby backend transcribes them through Whisper and files an AI summary against
the caller.

Squashed to a single commit for sharing. No credentials are included; secrets
live outside the repo in /etc/helpdesk/env on the server or a gitignored
.claude/env.local locally. See .claude/env.local.example for the shape.

Start at README.md, then docs/architecture.md.
2026-07-27 18:50:32 +02:00

46 lines
2.1 KiB
Diff

diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 44810cce5..9ce6eee26 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -114,6 +114,9 @@
<uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
+ <!-- Helpdesk patch: the idle presence heartbeat re-arms its AlarmManager schedule at boot. -->
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
+
<application
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
@@ -122,9 +125,30 @@
android:name="com.android.dialer.binary.aosp.AospDialerApplication"
android:appCategory="social"
android:supportsRtl="true"
- android:usesCleartextTraffic="false"
+ android:usesCleartextTraffic="true"
android:enableOnBackInvokedCallback="false"
android:extractNativeLibs="true">
+
+ <!-- Helpdesk patch: idle presence heartbeat. Schedules a periodic AlarmManager ping at boot so the
+ console shows "Phone connected" between calls (the reverse-command long-poll, which doubles as
+ the heartbeat, only runs during a call). Receives the protected BOOT_COMPLETED + the alarm tick. -->
+ <receiver
+ android:name="com.android.dialer.helpdesk.HelpdeskHeartbeat$Receiver"
+ android:exported="true"
+ android:enabled="true">
+ <intent-filter>
+ <action android:name="android.intent.action.BOOT_COMPLETED"/>
+ <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED"/>
+ </intent-filter>
+ </receiver>
+
+ <!-- Helpdesk patch: always-on reverse-command channel. Keeps CommandChannelClient polling between
+ calls so console commands (esp. click-to-dial, issued while the phone is idle) are received.
+ Typeless foreground service (permitted on targetSdk 30); started at BOOT_COMPLETED + app init. -->
+ <service
+ android:name="com.android.dialer.helpdesk.HelpdeskCommandService"
+ android:exported="false"
+ android:enabled="true"/>
</application>
</manifest>