Bonjour,

J'essaye de développer un explorateur de fichier sous Android.

J'ai fini l'interface graphique tous ce passe bien quand j'utilise la fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Environment.getRootDirectory()
Comme point de départ pour la liste des fichiers.

Cependant j'aimerais faire deux listes : une pour la mémoire interne et une autre pour la mémoire externe.

J'ai donc cherché sur internet et j'ai trouvé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Environment.getExternalStorageDirectory()
Cependant sur l'émulateur de Android Studio, et sur un Samsung S7 la liste est vide, si j'essaye sur un Sony M4 Aqua ça fonctionne MAIS j'ai la mémoire interne...... o_O

Je vous donne mon code :

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
public class PhoneMemoryActivity extends AppCompatActivity {
 
    private ListView            mList = null;
    private List<File>          mDirectoryList = null;
    private DirectoryAdaptater  mAdaptater = null;
    private File                mRoot = null;
    private File                mCurrentDirectory = null;
    private File                mCurrentClick = null;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phone_memory);
 
        init();
        setTitle(mRoot.getAbsolutePath());
 
        File[] ff = ContextCompat.getExternalFilesDirs(this, null);;
 
        for (File f : ff) {
            mDirectoryList.add(f);
        }
        mAdaptater = new DirectoryAdaptater(this, 0, mDirectoryList);
        mList.setAdapter(mAdaptater);
 
        mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                File f = mAdaptater.getItem(position);
 
                mCurrentDirectory = f;
                setTitle(f.getAbsolutePath());
                mAdaptater.update(f.listFiles());
            }
        });
 
        mList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                File file =  (File) parent.getItemAtPosition(position);
                DialogFragment df = ModifyFileDialogFragment.newInstance(R.string.app_name);
                df.show(getSupportFragmentManager().beginTransaction(), "dialog");
                df.getArguments().putSerializable("file", file);
                return (true);
            }
        });
 
    }
 
    @Override
    public void onBackPressed()
    {
        if (!mCurrentDirectory.getName().equals(mRoot.getName())) {
            File f = mCurrentDirectory.getParentFile();
 
            mCurrentDirectory = f;
            setTitle(f.getAbsolutePath());
            mAdaptater.update(f.listFiles());
        } else
            super.onBackPressed();
    }
    private void init() {
        mDirectoryList = new ArrayList<File>();
        mList = (ListView) findViewById(R.id.listView);
        mRoot = Environment.getRootDirectory().getParentFile();
        mRoot = null;
        if (mRoot.listFiles() == null)
            System.out.println("MROOT =================================== NULL  " + Environment.getExternalStorageDirectory().toString());
        else
            System.out.println("MROOT !=================================== NULL --->" + Environment.getExternalStorageDirectory().toString());
        mCurrentDirectory = mRoot;
    }
 
    public static void deleteFile() {
    }
 
}
Quelqu'un peut m'aider svp ? ça fait trois jours que je bloque dessus

Cordialement,