Commit Graph

12 Commits

Author SHA1 Message Date
4c337ff06d Guard the JNI fragment registration against the null detach view.
Gio's GioView.onDestroyView signals detach with ViewEvent{View: 0};
handleEvent already filters these, but add defense in depth so any
caller forwarding the event unfiltered cannot drive the JNI path
(GetObjectClass on a null ref aborts the process, the recents-wipe
SIGABRT). Completes the intent of PR #1, whose handleEvent guard is
already in master from the migration commit.

Fixes: recents-wipe crash defense (PR #1 superseded).
2026-08-21 15:29:24 -04:00
dc7661e226 Android: launch the 'All files access' settings screen at startup.
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.
2026-08-21 14:44:38 -04:00
af1b878308 passgo package: modernize for go 1.24; reset store.Empty in GetStore.
- Update to //go:build tags, gofmt, and the android-35 javac template
  in //go:generate.
- GetStore: reset store.Empty when the store directory exists (it was
  only set true when the dir was missing, so a reconfigured store kept
  the stale 'Empty' state and showed the configure button).
- Rebuild PgpConnect.jar (android-35).
2026-08-21 13:00:04 -04:00
ec0b64f5f5 Migrating to new Gio version (non-working version). 2020-08-31 17:03:07 -04:00
94cfbbeb41 Update Gio version. Working Android implementation. 2019-11-26 13:24:03 -05:00
4fc504b89a Restructure for automatic Fragment registration by Gio. 2019-11-21 18:18:47 -05:00
23df75fd15 Add permissions request, comment out debug print statements. 2019-11-20 16:44:28 -05:00
8aacb243d2 Implement Clip on Android. 2019-11-20 14:56:11 -05:00
8611bfb5e0 Cleanups in Android implementation. 2019-11-20 13:53:40 -05:00
46c76ed065 Start of Android implementation. 2019-11-20 11:52:19 -05:00
12b57d263f go fmt 2019-09-10 11:36:03 -04:00
2c4c708b3a Re-arrange platform-dependent code. 2019-09-10 11:31:57 -04:00