3 Stimmen

Bluetooth-Ordner, unterschiedlicher Pfad auf verschiedenen Telefonen

Ich habe herausgefunden, dass verschiedene Android-Versionen die empfangenen Bluetooth-Dateien in verschiedenen Ordnern ablegen. Zum Beispiel läuft auf einem meiner Testtelefone android 2.2 speichert die Dateien in diesem Pfad:

/mnt/sdcard/Downloads/Bluetooth

und mein zweites Testtelefon, auf dem android 4.0 speichert die Dateien hier

/mnt/sdcard/Bluetooth

Handelt es sich dabei um ein Problem des Betriebssystems oder ist es von der Herstellung des Telefons abhängig?

Wenn die erste Aussage die richtige ist, kann ich überprüfen, welche Version von Android läuft, und der Punkt auf den Bluetooth-Ordner? Oder gibt es eine viel einfachere Möglichkeit, dies zu tun?

Danke!

4voto

Nach einigen Stunden habe ich zwei Methoden entwickelt, um dies zu tun. Sie sollten die Methoden in eine AsyncTask oder eine Thread . Hier sind also meine beiden Methoden:

public List<File> folderSearchBT(File src, String folder)
        throws FileNotFoundException {

    List<File> result = new ArrayList<File>();

    File[] filesAndDirs = src.listFiles();
    List<File> filesDirs = Arrays.asList(filesAndDirs);

    for (File file : filesDirs) {
        result.add(file); // always add, even if directory
        if (!file.isFile()) {
            List<File> deeperList = folderSearchBT(file, folder);
            result.addAll(deeperList);
        }
    }
    return result;
}

Dies ist eine rekursive Methode, die alle Ordner im Verzeichnis src Parameter in eine Liste.

Ich verwende diese Methode in dieser Methode hier:

public String searchForBluetoothFolder() {

    String splitchar = "/";
    File root = Environment.getExternalStorageDirectory();
    List<File> btFolder = null;
    String bt = "bluetooth";
    try {
        btFolder = folderSearchBT(root, bt);
    } catch (FileNotFoundException e) {
        Log.e("FILE: ", e.getMessage());
    }

    for (int i = 0; i < btFolder.size(); i++) {

        String g = btFolder.get(i).toString();

        String[] subf = g.split(splitchar);

        String s = subf[subf.length - 1].toUpperCase();

        boolean equals = s.equalsIgnoreCase(bt);

        if (equals)
            return g;
    }
    return null; // not found
}

Ich hoffe, das hilft euch, Leute!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X