PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2025 → Récupération partage depuis une autre application
Récupération partage depuis une autre application
Débuté par erbl, 21 mar. 2025 17:15 - 2 réponses
Membre enregistré
241 messages
Posté le 21 mars 2025 - 17:15
Bonjour tout le monde

J'ai un besoin en théorie très simple :

Une application tierce produit un fichier zip que je dois pouvoir traiter dans mon application

J'ai écumé les forums et vu quelques sujets similaires exemple https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windevmobile/44675-android-communication-entre-2-applis-par-intention/read.awp mais jamais de véritable solution complète clé en mainset pas mal de sujets sont super vieux (on mentionne une LST d 2015, très certainement obsolète depuis)

J'ai commencé à entrevoir une piste et je me lance dans l'implémentation, je crée ce post en + pour avoir vos eventuels conseils mais surtout quand j'aurai réussi à faire ça , que la solution soit présente sur le forum pour tout le monde

--
Ce n'est pas l'outil le plus important mais la manière de s'en servir
Membre enregistré
241 messages
Posté le 21 mars 2025 - 17:26
Étape numéro 1 : Indiquer que notre application peut recevoir un partage

C'est la partie la + facile mais malgré tout, faut il encore le savoir donc je vous la remets ici :

Génération de l'application Android > Suivant jusqu'à Configuration avancée > Éditer le manifeste

Là il faut ajouter un noeud <intent-filter> en dessous de celui existant dans <activity>

<intent-filter>
<action android:name=android.Intent.action.SEND />
<category android:name=android.Intent.category.DEFAULT />
<data android:mimeType=application/zip />
</intent-filter>


Dans type mime j'ai mis zip pour mon besoin mais on peut très bien en choisir d'autres, la liste complète est ci dessous :

https://www.iana.org/assignments/media-types/media-types.xhtml

Lorsque c'est fait, compilé et déployé sur le device, n'importe quelle application avec partage du fichier zip, mon application est dans la liste des options, il me reste à gérer la reception puis traitement du côté de mon application mais ça fera l'objet d'une autre réponse plus tard

--
Ce n'est pas l'outil le plus important mais la manière de s'en servir
Membre enregistré
241 messages
Posté le 26 mars 2025 - 15:28
Étape numéro 2 : recevoir le fichier zip

2.1 : Méthode java qui va récupérer l'intent et le traiter
import android.content.Intent;
import android.net.Uri;
import android.app.Activity;
import android.widget.Toast;
import java.io.File;
import android.os.Bundle;

public static Uri getZip()
{
Toast.makeText(getActiviteEnCours(), "Appli ouverte",Toast.LENGTH_LONG).show();
Intent intent = getActiviteEnCours().getIntent();
if( intent!=null){
Bundle bundle = intent.getExtras();
if( bundle != null){
Uri uri = (Uri)bundle.get(Intent.EXTRA_STREAM);
if(uri!=null){
Toast.makeText(getActiviteEnCours(), "Zip reçu",Toast.LENGTH_LONG).show();
return uri;
}
}
}
return null;
}

J'ai un avertissement Type de retour non valide mais ça semble être une bizarrerie WINDEV Mobile, le code java est correct et ça fonctionne.

2.2 Code à l'initialisation du projet qui appelle la méthode java et fait un traitement WINDEV (ici j'enregistre le fichier zip)

gsUri est une URI = getZip()
SI gsUri <>Null ALORS
sRepetoire est une chaîne = "Chemin sur le disque"
SI PAS ErreurDétectée ALORS
// Enregistre la ressource dans le répertoire de l'application
URIVersFichier(gsUri , sRepetoire+"MonFichier.zip", ProcEnregistre,"application/zip")
PROCEDURE INTERNE ProcEnregistre(bResultat, sChemin)
SI bResultat ALORS
ToastAffiche("Enregistrement terminé "+sChemin)
SINON
ToastAffiche("Échec de l'enregistrement")
SI PAS EnModeArrièrePlan() ALORS
Erreur(ErreurInfo())
FIN
FIN
FIN
FIN
FIN


--
Ce n'est pas l'outil le plus important mais la manière de s'en servir