Commit ad9d083
fix(install): tell read failures, parse failures and missing permission apart
Chasing the first gap against InstallerX Revived, which has separate states
for "could not read the file" and "could not parse the package" where this
app had one. It turned out to have less than one.
An unreadable URI crashed the app outright. getDisplayName queries the
sending app's provider from composition, on the main thread, with no guard —
so the moment that grant lapsed it threw SecurityException and took the
process down:
FATAL EXCEPTION: main
java.lang.SecurityException: Permission Denial: opening provider
ru.zdevs.zarchiver.provider.FileProvider ... not exported from UID 10373
at ContentResolverKt.getDisplayName(ContentResolver.kt:12)
at DialogInstallActivity.onCreate$lambda$2(DialogInstallActivity.kt:468)
It is best-effort now: no name is not a reason to lose the install.
Parse failures did not crash but were barely better — a toast saying
"unsupported file" and the dialog vanishing, regardless of whether the file
was unreadable or genuinely not a package. Both are dialog states now:
ReadFailed says the sending app no longer allows access and to open it again
from there; ParseFailed says the bytes arrived but are not an installable
package. The underlying exception is shown as detail rather than as the whole
message. Which one you get is decided by the throwable — SecurityException,
FileNotFoundException and IOException mean the bytes never arrived.
Third state, the second gap: PermissionRequired. Install-from-unknown-sources
is now checked when Install is tapped, so a missing permission asks for it
instead of starting an install that fails inside the system installer and
gets reported as if the package were at fault.
The crash fix is verified by the stack trace above. The three states compile
but are not yet seen on device — the phone dropped off adb before this build
could be installed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 74d9c2b commit ad9d083
7 files changed
Lines changed: 232 additions & 26 deletions
File tree
- app/src/main
- java/app/pwhs/universalinstaller
- presentation/install
- dialog
- util/extension
- res/values
Lines changed: 56 additions & 19 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
85 | 86 | | |
86 | 87 | | |
87 | 88 | | |
| 89 | + | |
88 | 90 | | |
89 | 91 | | |
90 | 92 | | |
| |||
108 | 110 | | |
109 | 111 | | |
110 | 112 | | |
| 113 | + | |
| 114 | + | |
111 | 115 | | |
112 | 116 | | |
113 | 117 | | |
| |||
165 | 169 | | |
166 | 170 | | |
167 | 171 | | |
168 | | - | |
169 | | - | |
| 172 | + | |
| 173 | + | |
170 | 174 | | |
171 | 175 | | |
172 | 176 | | |
| |||
187 | 191 | | |
188 | 192 | | |
189 | 193 | | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
190 | 224 | | |
191 | 225 | | |
192 | 226 | | |
| |||
204 | 238 | | |
205 | 239 | | |
206 | 240 | | |
207 | | - | |
208 | 241 | | |
209 | 242 | | |
210 | 243 | | |
| |||
449 | 482 | | |
450 | 483 | | |
451 | 484 | | |
452 | | - | |
453 | | - | |
454 | | - | |
455 | | - | |
456 | | - | |
457 | | - | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
458 | 489 | | |
459 | 490 | | |
460 | 491 | | |
| |||
515 | 546 | | |
516 | 547 | | |
517 | 548 | | |
518 | | - | |
519 | | - | |
520 | | - | |
521 | | - | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
522 | 556 | | |
523 | 557 | | |
524 | 558 | | |
| |||
635 | 669 | | |
636 | 670 | | |
637 | 671 | | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
638 | 676 | | |
639 | 677 | | |
| 678 | + | |
| 679 | + | |
640 | 680 | | |
641 | 681 | | |
642 | 682 | | |
| |||
650 | 690 | | |
651 | 691 | | |
652 | 692 | | |
653 | | - | |
| 693 | + | |
654 | 694 | | |
655 | 695 | | |
656 | 696 | | |
| |||
671 | 711 | | |
672 | 712 | | |
673 | 713 | | |
| 714 | + | |
674 | 715 | | |
675 | 716 | | |
676 | 717 | | |
| |||
769 | 810 | | |
770 | 811 | | |
771 | 812 | | |
772 | | - | |
773 | | - | |
774 | | - | |
775 | | - | |
776 | | - | |
| 813 | + | |
777 | 814 | | |
778 | 815 | | |
779 | 816 | | |
| |||
Lines changed: 19 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
32 | 51 | | |
33 | 52 | | |
34 | 53 | | |
| |||
Lines changed: 9 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
300 | 300 | | |
301 | 301 | | |
302 | 302 | | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
303 | 312 | | |
304 | 313 | | |
305 | 314 | | |
| |||
Lines changed: 40 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
| 31 | + | |
30 | 32 | | |
31 | 33 | | |
32 | 34 | | |
| |||
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
| 59 | + | |
57 | 60 | | |
58 | 61 | | |
59 | 62 | | |
| |||
227 | 230 | | |
228 | 231 | | |
229 | 232 | | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
230 | 270 | | |
231 | 271 | | |
232 | 272 | | |
Lines changed: 89 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
389 | 389 | | |
390 | 390 | | |
391 | 391 | | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
Lines changed: 11 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
9 | 16 | | |
10 | | - | |
| 17 | + | |
11 | 18 | | |
12 | 19 | | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
| 20 | + | |
17 | 21 | | |
18 | | - | |
| 22 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
100 | 108 | | |
101 | 109 | | |
102 | 110 | | |
| |||
0 commit comments