Android 当我将安卓设备插入大电脑时,如何找到我在大电脑上看到的目录

Android 当我将安卓设备插入大电脑时,如何找到我在大电脑上看到的目录,android,directory-structure,Android,Directory Structure,当我把我的设备插入大电脑时,我看到了下图 如何使用Android应用程序以编程方式查找这两个目录 更新 我编写了实用程序类来推导根。不幸的是,它适用于minSdkVersion=19 问题依然存在:是否有任何解决方案至少适用于SDK=15 附言 人们否决了这个绝对正常的问题:你们只是在宣称自己是小丑 如何使用Android应用程序以编程方式查找这两个目录 你没有 标签为Phone的可能就是androidsdk所指的。我这么说大概是因为设备制造商似乎改变了这个标签——我通常把它称为内部存储或内部存

当我把我的设备插入大电脑时,我看到了下图

如何使用Android应用程序以编程方式查找这两个目录

更新

我编写了实用程序类来推导根。不幸的是,它适用于minSdkVersion=19

问题依然存在:是否有任何解决方案至少适用于SDK=15

附言

人们否决了这个绝对正常的问题:你们只是在宣称自己是小丑

如何使用Android应用程序以编程方式查找这两个目录

你没有

标签为Phone的可能就是androidsdk所指的。我这么说大概是因为设备制造商似乎改变了这个标签——我通常把它称为内部存储或内部存储。要获取外部存储的根目录,请使用Environment.getExternalStorageDirectory。请注意,这要求您持有读取外部存储或写入外部存储权限,包括在运行时请求这些权限


标签卡可能是指一些可移动介质。您无法使用的根目录。

这可能会帮助您:


由于该方法,您可以列出所有装载的外部存储器路径。我在我的项目中使用它将数据存储在sd卡中,并在20多台设备上进行了测试。

它是外部存储目录。您可以通过、环境访问。getExternalStorageDirectory@Divyesh不,不需要。tEnviroment.getExternalStorageDirectory提供手机存储目录谢谢,但我需要两者。我的相机应用程序成功地将照片存储在可移动存储上。我也不想。我被剥夺了吗?@Dims:欢迎您使用中概述的技术来处理可移动存储,例如getExternalFilesDirs、ACTION\u OPEN\u DOCUMENT。另请参见。您能否提示如何使用此技术查找DCIM目录?@Dims:如果您指的是应用程序唯一的DCIM目录,请使用getExternalFilesDirsEnvironment.directory\u DCIM或getExternalMediaDirsEnvironment.directory\u DCIM。如果返回2+个项目,则第二个和后续项目位于可移动存储上,对于您的应用程序是唯一的,并且可以由您使用普通的文件系统API使用。如果您指的是Android 7.0+上的某个常见DCIM目录,.@Dims:或者,对于常见DCIM目录,则指Android 5.0+上的某个常见DCIM目录,尽管用户可能不会选择DCIM,也可能不会选择可移动存储。
public class RootsUtil {

    private final static String seed = Environment.DIRECTORY_PICTURES;

    public final static File[] getRoots(Context context) {

        File[] paths = context.getExternalFilesDirs(seed);

        if( paths.length <= 1 ) {
            return new File[] { Environment.getExternalStorageDirectory() };
        }
        else {
            while(true) {
                int count = 1;

                for (int i = 1; i < paths.length; ++i) {
                    if (paths[0].getName().equals(paths[i].getName())) {
                        count++;
                    }
                }
                if( count==paths.length ) {
                    for (int i = 0; i < paths.length; ++i) {
                        paths[i] = paths[i].getParentFile();
                    }
                }
                else {
                    break;
                }
            }
            return paths;
        }
    }
}