3

Androidのバージョンが異なれば、受信したBluetoothファイルが別のフォルダーに配置されることがわかりました。たとえば、実行中のテスト電話の1つはandroid 2.2、ファイルを次のパスに保存します。

/mnt/sdcard/Downloads/Bluetooth

2番目のテスト用電話を実行するとandroid 4.0、ファイルがここに保存されます

/mnt/sdcard/Bluetooth

このオペレーティングシステムは「問題」ですか、それとも電話の製造元から設定されたものですか?

最初のステートメントが正しい場合、実行中のAndroidのバージョンを確認し、Bluetoothフォルダーを指すことができますか?または、これを行うためのはるかに簡単な方法はありますか?

ありがとう!

4

1 に答える 1

4

数時間後、私はこれを行うための2つの方法を作成しました。メソッドをAsyncTaskまたはに配置する必要がありThreadます。これが私の2つの方法です。

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;
}

これは、srcパラメーター内のすべてのフォルダーをリストに追加する再帰的な方法です。

私はここでこのメソッドでこのメソッドを使用します:

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
}

これがお役に立てば幸いです。

于 2012-08-30T14:20:39.133 に答える