1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<!-- spec 08 C6 (Step 15): typed call FGS + native ringing. The typed
permissions and foregroundServiceType values land on API 34+; on older
platforms they are ignored (the call still works, just untyped). -->
<!-- POST_NOTIFICATIONS: the foreground service's persistent notification
must be allowed to post (Android 13+); the FGS itself is exempt, but
user-facing notifications (recovery, timeout, message, ring) are not. -->
<!-- AND-09: REQUEST_IGNORE_BATTERY_OPTIMIZATIONS is intentionally NOT
declared by this library. It is Play-policy-restricted, so it must be
opted in by the HOST application in its own manifest. The Tauri
`requestBatteryExemption` command still launches the system
ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS dialog; the host-declared
permission is what authorizes that dialog (without it the dialog throws
SecurityException at runtime). See docs/android.md
"Battery optimization exemption". -->
<!-- spec 08 / M-NATIVE-1 (Step 9): native ring Answer/Decline → Rust
control plane. The notification action PendingIntents are
getBroadcast intents targeting this receiver; it runs while the
device is locked / the webview is closed and drives
answer_call/reject_call in the in-process headless Core. Not
exported — only the app's own notification PendingIntents fire it. -->
<!-- Message notification actions: inline Reply and Mark as read route
through a broadcast receiver so they can reach the headless Rust
Core without opening the webview. -->
<!-- spec 08 C6 (Step 15): self-managed Telecom ConnectionService so the
OS call UI, audio focus, and Bluetooth routing follow the system
call path while the webview is closed. Requires MANAGE_OWN_CALLS. -->