Bonjour,

Après avoir parcouru différents blogs et forums, j'ai trouvé la solution pour réaliser une sélection multiple de photos dans la galeries et traiter les chemins trouvés vers ces photos:

Création de l'Intent:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
parcourir.setOnClickListener(new View.OnClickListener() {    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Select Picture"), 1);
    }
});
Traitement de la sélection:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
protected void onActivityResult(int requestCode, int resultCode, Intent data) {    try {

        if (requestCode == 1 && resultCode == RESULT_OK && null != data) {

            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Uri mImageUri = data.getData();

            // cas fichier unique
            if(mImageUri != null){

                String path = GetPathToImage (mImageUri);
                imagesEncodedList.add(path);
                Log.v("[DEBUG]", "Fichier: " + path);
            
            // cas plusieurs fichiers
            } else {
                ClipData mClipData = data.getClipData();
                if (mClipData != null) {

                    ArrayList<Uri> mArrayUri = new ArrayList<Uri>();

                    for (int i = 0; i < mClipData.getItemCount(); i++) {

                        ClipData.Item item = mClipData.getItemAt(i);
                        Uri uri = item.getUri();
                        String path = GetPathToImage (uri);
                        Log.v("[DEBUG]", "Fichier: " + path);
                        imagesEncodedList.add(path);

                    }
                    Log.v("LOG_TAG", "Selected Images" + mArrayUri.size());
                }

            }

        } else {
            Toast.makeText(this, "Aucune image sélectionnée", Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        Toast.makeText(this, "Une erreur est survenue", Toast.LENGTH_LONG).show();
    }

    super.onActivityResult(requestCode, resultCode, data);
}
Pour récupérer le chemin de l'image sur le téléphone:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public String GetPathToImage(Uri uri){
    String doc_id = null;
    String document_id = null;
    String path = null;
    String selection = Media._ID + " =? ";
    Cursor c1 = null;

    c1 = getContentResolver().query(uri, null, null, null, null);
    c1.moveToFirst();
    document_id = c1.getString(0);
    doc_id = document_id.substring(document_id.lastIndexOf(":") + 1);
    c1.close();

    c1 = getContentResolver().query(Media.EXTERNAL_CONTENT_URI, null, selection, new String[] {doc_id}, null);
    if (c1 != null) {
        int columnIndex = c1.getColumnIndexOrThrow(Media.DATA);
        c1.moveToFirst();
        path = c1.getString(columnIndex);
    }

    return path;
}
(en espérant que ça puisse déjà servir à quelqu'un...)

Le problème... c'est que je ne comprends rien à ce qui a été fait. Rien c'est peut être exagérer, mais si le prends le code de la fonction getPathToImage(), je ne comprends pas comment sont réalisées et traitées les requêtes.

Je suis allé dans la doc, mais c'est soit très lourd soit très vide:
https://developer.android.com/guide/...er-basics.html
https://developer.android.com/refere...se/Cursor.html

Typiquement je prends la doc sur ClipData, je lis en en-tête:
Representation of a clipped data on the clipboard.
ClipData is a complex type containing one or more Item instances, each of which can hold one or more representations of an item of data. For display to the user, it also has a label.
Donc c'est une représentation complexe... ça n'aide pas à traiter son contenu.

Où trouver de la doc avec un exemple d'application simple et "atomique", comme on trouverait:
- en php : http://php.net/manual/fr/function.substr.php (la meilleure doc de tous les temps)
- en vb : https://msdn.microsoft.com/fr-fr/lib...(v=vs.71).aspx

En Java je trouve des briques sur internet sans vraiment comprendre d'où elles viennent... c'est parfait pour faire une application robuste

Merci