Partage d’image sous Android avec une application Oracle APEX PWA

Contexte

J’avais un besoin simple sur le papier : permettre à des utilisateurs Android de partager directement une photo depuis leur galerie ou Google Photos vers mon application Oracle APEX, qui est packagée en PWA.
Objectif : que l’utilisateur choisisse Partager → mon appli et que la photo soit automatiquement transmise à APEX.


2. Défi technique

Oracle APEX n’intègre pas nativement la fonctionnalité Web Share Target API, qui permet aux PWA de recevoir des fichiers depuis le menu de partage du mobile.
Problème supplémentaire : l’architecture ORDS sur le cloud impose des chemins fixes (/pls/apex/<workspace>/...), compliquant l’intégration directe dans le service worker.


3. La solution

Après plusieurs tests et un dialogue avec ChatGPT, la clé a été de :

  • Déclarer un share_target dans le manifest.json de l’appli APEX.
  • Utiliser un Service Worker custom pour intercepter le POST envoyé par Android au partage.
  • Récupérer le fichier envoyé (formData) dans le SW, compresser l’image pour limiter la taille (500 Ko max), et l’envoyer vers un REST ORDS dédié.
  • Retourner un script de redirection vers une page APEX publique avec l’ID de la photo.

4. Points techniques clés

  • Activation immédiate du Service Worker (skipWaiting() et clients.claim()).
  • Compression côté client via OffscreenCanvas et réduction progressive de qualité.
  • Possibilité d’extraire les données EXIF GPS avant compression.
  • Gestion des erreurs (405 Method Not Allowed sur mauvais endpoint, écran blanc Android lors du premier partage). Ce point est encore à améliorer.

5. Résultat

✅ Les utilisateurs peuvent désormais partager une photo directement depuis Google Photos ou la galerie vers l’appli APEX.
✅ Temps d’envoi réduit grâce à la compression locale.
✅ Intégration fluide dans un environnement cloud sans modification du serveur APEX.


6. Conclusion / Call to Action

Cette approche montre que même avec les contraintes d’APEX et ORDS sur le cloud, il est possible de tirer parti des APIs modernes du Web pour offrir une expérience mobile plus naturelle.

Ce post a été rédigé avec ChatGPT

Matériel

https://github.com/patrickmonaco/ShareImages

Author

About the author

GPM Factory