Commit 363bee0
committed
Charging: Gate GrapheneOS charge control on Shizuku
The 0.3.2-beta0 on-device report (issue #49) disproved the landing
assumption that global battery_charge_limit is world-readable and
WSS-writable: the probe read absent while the same report showed the
limit enforcing (charging state 4). GrapheneOS declares the key
@Protected(read = SYSTEM_UI, readWrite = SETTINGS) (frameworks_base
c30c6393) and its SettingsProvider throws SecurityException on reads
and writes from every other package - including WRITE_SECURE_SETTINGS
holders; the check is package-based and runs after the permission
check (e87c93a2). The one exemption Amply can use is the shell UID
('ADB is used for testing'), which is exactly how the Shizuku user
service executes settings get/put - the tester's successful adb runs
were this path's evidence all along.
The adapter now sets preferShizukuForWrites (existing Oplus plumbing:
Shizuku-required banner, disabled controls, skipped WSS auto-grant)
and drops the unprobeable key-presence gate - @Protected denies the
probe whether the key exists or not, so presence is assumed on any
GrapheneOS build, the Xiaomi-precedent assumption with the same
accepted harmless-false-claim failure mode. An absent key now decodes
as the factory off state per upstream source (BoolSetting default
false) instead of refusing. Reads need no code change: the direct read
comes back unreadable and readSyncDirectFirst already falls through to
Shizuku. The shared Shizuku-required banner no longer claims state
stays readable without Shizuku, which was only true for Oplus.
On-device beta evidence recorded in the ledger: package detection
verified from app context; unprivileged key access denied as designed
(fail closed).1 parent 3beb2f1 commit 363bee0
14 files changed
Lines changed: 155 additions & 102 deletions
File tree
- .claude
- rules
- skills
- device-qualification
- oem-adapters
- app/src
- main
- java/eu/darken/amply
- charging/core
- adapter
- main/ui/dashboard
- res/values
- test/java/eu/darken/amply
- charging/core/adapter
- main/core
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
90 | 90 | | |
91 | 91 | | |
92 | 92 | | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
98 | 113 | | |
99 | | - | |
100 | 114 | | |
101 | 115 | | |
102 | 116 | | |
| |||
108 | 122 | | |
109 | 123 | | |
110 | 124 | | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
115 | 129 | | |
116 | 130 | | |
117 | 131 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| |||
116 | 117 | | |
117 | 118 | | |
118 | 119 | | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
131 | 128 | | |
132 | 129 | | |
133 | 130 | | |
| |||
137 | 134 | | |
138 | 135 | | |
139 | 136 | | |
140 | | - | |
141 | 137 | | |
142 | 138 | | |
143 | 139 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
110 | 114 | | |
111 | 115 | | |
112 | 116 | | |
| |||
Lines changed: 9 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
270 | 270 | | |
271 | 271 | | |
272 | 272 | | |
273 | | - | |
| 273 | + | |
274 | 274 | | |
275 | 275 | | |
276 | | - | |
277 | | - | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
278 | 279 | | |
279 | 280 | | |
280 | 281 | | |
| |||
603 | 604 | | |
604 | 605 | | |
605 | 606 | | |
606 | | - | |
607 | | - | |
| 607 | + | |
| 608 | + | |
608 | 609 | | |
609 | | - | |
610 | | - | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
611 | 613 | | |
612 | 614 | | |
613 | 615 | | |
| |||
Lines changed: 5 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
91 | | - | |
92 | | - | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
93 | 96 | | |
94 | 97 | | |
95 | 98 | | |
| |||
0 commit comments