使用Android 6.0.1获取USB闪存的外部存储路径

时间:2016-08-13 12:35:20

标签: android usb android-external-storage

在Nexus 5X上使用Android 6.0.1(API23),

不同的Android版本以及如何访问外部存储(例如我的USB-Stick)可能会非常混乱。根据我的理解,您需要在清单中提供权限,如下所示:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

之后你应该能够访问外部存储..

以下是我使用“getExternalFilesDirs()”方法获取外部存储路径的方法。但事实证明,只识别内部SD卡(即该方法返回的第一个数组元素)。

根据我的阅读,如果有更多的外部存储设备连接到手机,应该有更多的数组元素返回“getExternalFilesDirs()” - 方法。但就我而言,它们都不可用。

这是我的代码:

    String strInfo = "";
    File folders[] = getExternalFilesDirs(null);
    // File folders[] = ContextCompat.getExternalFilesDirs(this,null);
    strInfo += "\ngetExternalFilesDirs(null):\n";
    for(File f : folders){
        strInfo += f.getAbsolutePath() + "\n";
    }
    if (folders.length > 1) {
        Toast.makeText(this, "nr of folders = " + folders.length + "/ info = " + strInfo, Toast.LENGTH_SHORT).show();
        File myFile = new File(folders[1], "testfile.txt");
    } else {

    // !!!!!!!!!!!!! Keep ending up in this case, even tough a USB-stick is
    // connected to the phone (...also tried with a second SD-card
    // connected...but same thing, keeeping up ending here... 
    // any idea WHY ???????????????

        Toast.makeText(this, "No external storage device found / info = " + strInfo, Toast.LENGTH_SHORT).show();
    }

最后,我想在外部连接的USB记忆棒上创建文件和文件夹。任何人都可以告诉我如何在连接到Android-6.0.1手机的USB记忆棒上创建新文件和文件夹的可靠方法吗? 我很感激。

1 个答案:

答案 0 :(得分:0)

关闭此功能:不幸的是,USB-sticks似乎不适用于Android手机的SECONDARY STORAGE(=外部存储)。

我刚发现这个link,说:

External storage devices returned here are considered a permanent part
of the device, including both emulated external storage and physical
media slots, such as SD cards in a battery compartment. The returned
paths do not include transient devices, such as USB flash drives.

类似的,official Android documentation about getExternalFilesDirs() sais:

The returned paths do not include transient devices, such as USB flash drives 
connected to handheld devices.

如果有人知道满足二级存储要求的C型USB记忆棒,请告诉我!同样,如果有人知道作为SECONDARY STORAGE工作的USB-C型SD卡适配器,请告诉我......

太糟糕了,我无法写文件&amp;从我的java安卓应用程序到外部USB棒的文件夹:(