MANAGE_EXTERNAL_STORAGE (needed to read the store at
/storage/emulated/0/...) cannot be requested with a runtime
permission dialog; the user must toggle it in system settings.
Port the mechanism from the pad app:
- Permissions.java: a Fragment registered at window attach that
launches Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
(per-app settings screen) when Environment.isExternalStorageManager()
is false on API 30+ (runtime READ_EXTERNAL_STORAGE request on
older APIs). The guard means the screen appears only until the
user grants it.
- The compiled classes ship in PgpConnect.jar's directory jar
(Permissions.jar); gogio picks *.jar up from the package dir and
dexes them. go:generate now rebuilds it.
- jni_android.c/h: registerPermissionsFragment(), mirroring
registerFragment() for PgpConnect.
- Impl wiring: call it from the AndroidViewEvent handler right
after InitPgp.
Verified on the x86_64 emulator: with the appop denied the system
settings screen opens automatically on launch; after granting it,
launch is clean and list + OpenKeychain decryption from
/sdcard/Pass work end to end.
- Event loop: call w.Event() and FrameEvent.Frame() on the same
goroutine; no channel bridge (the bridge broke frame rendering).
- clip: use clip.UniformRRect(...).Push(gtx.Ops) / Pop() for real
clipping in layoutRRect (old .Add(ops) painted unclipped).
- Window clear color is white in v0.10.2.
- Fonts: always provide gofont; on Android use
WithCollection(gofont.Collection()).
- Button labels: explicitly set Color (zero-value NRGBA has A=0,
i.e. transparent, so labels were invisible).
- Filter: detect changes by comparing the editor text, since
material.Editor.Layout consumes the editor's input events
internally and a later FilterEd.Update(gtx) never sees them.
- idPage: persist the manually entered ID with store.SetID (on
Android nativeIdentities is unimplemented, so there are no id
buttons to click).
- Use U+2026 (gofont) instead of U+22EE (not in gofont) for the
menu button.
- Split getConfDir/noidLabelText out into impl_linux.go for the
Linux build.