Android 的外部 SDCard 文件路径 [英] External SDCard file path for Android

查看:34
本文介绍了Android 的外部 SDCard 文件路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Android 设备上外部 SDCard 的文件路径是否总是"/storage/extSdCard"?如果没有,有多少变体?

我的应用需要它来测试外部 SDCard 的可用性.

我正在使用 Titanium,它有一个方法 Titanium.Filesystem.isExternalStoragePresent( )但即使没有安装外部 SDCard,它也总是返回 true.

我认为它在本地存储中检测到 SDCard,因此返回 true.但我真正想要的是检测是否安装了物理SDCard.

我可以通过单独检测文件 "/storage/extSdCard" 的存在来做到这一点吗?

谢谢.

解决方案

Android 设备上外部 SDCard 的文件路径是否总是/storage/extSdCard"?如果没有,有多少变体?

遗憾的是,根据制造商的不同,外部存储的路径并不总是相同的.使用 Environment.getExternalStorageDirectory() 将返回 SD 卡的正常路径,即 mnt/sdcard/.但是对于三星设备来说,SD 卡路径要么在 mnt/extSdCard/ 下,要么在 mnt/external_sd/ 下.

所以一种方法是根据每个制造商使用的路径检查外部目录的存在.像这样:

mExternalDirectory = Environment.getExternalStorageDirectory().getAbsolutePath();如果(android.os.Build.DEVICE.contains(三星")||android.os.Build.MANUFACTURER.contains(三星")){文件 f = 新文件(Environment.getExternalStorageDirectory().getParent() + "/extSdCard" + "/myDirectory");如果 (f.exists() && f.isDirectory()) {mExternalDirectory = Environment.getExternalStorageDirectory().getParent() + "/extSdCard";} 别的 {f = 新文件(Environment.getExternalStorageDirectory().getAbsolutePath() + "/external_sd" + "/myDirectory");如果 (f.exists() && f.isDirectory()) {mExternalDirectory = 环境.getExternalStorageDirectory().getAbsolutePath()+ "/external_sd";}}}

<块引用>

但我真正想要的是检测是否安装了物理 SDCard.

我还没有尝试代码,但 Dmitriy Lozenko 在这个答案中的方法更有趣.无论制造商如何,他的方法都会返回系统上所有已安装 SD 卡的路径.

Is it true that the file path to external SDCard on Android devices are always "/storage/extSdCard"? If not, how many variations are there?

I need it for my App to test the availability of external SDCard.

I am using Titanium, it has a method Titanium.Filesystem.isExternalStoragePresent( ) but it always return true even external SDCard is not mounted.

I think it detect SDCard at local storage thus return true. But what I really want is detect whether physical SDCard is mounted or not.

Can I do this by detecting the existence of file "/storage/extSdCard" alone?

Thanks.

解决方案

Is it true that the file path to external SDCard on Android devices are always "/storage/extSdCard"? If not, how many variations are there?

Sadly the path to the external storage is not always the same according to manufacturer. Using Environment.getExternalStorageDirectory() will return you the normal path for SD card which is mnt/sdcard/. But for Samsung devices for example, the SD card path is either under mnt/extSdCard/ or under mnt/external_sd/.

So one way to proceed would be to check the existence of external directory according to the path used by each manufacturer. With something like this:

mExternalDirectory = Environment.getExternalStorageDirectory()
            .getAbsolutePath();
    if (android.os.Build.DEVICE.contains("samsung")
            || android.os.Build.MANUFACTURER.contains("samsung")) {
        File f = new File(Environment.getExternalStorageDirectory()
                .getParent() + "/extSdCard" + "/myDirectory");
        if (f.exists() && f.isDirectory()) {
            mExternalDirectory = Environment.getExternalStorageDirectory()
                    .getParent() + "/extSdCard";
        } else {
            f = new File(Environment.getExternalStorageDirectory()
                    .getAbsolutePath() + "/external_sd" + "/myDirectory");  
            if (f.exists() && f.isDirectory()) {
                mExternalDirectory = Environment
                        .getExternalStorageDirectory().getAbsolutePath()
                        + "/external_sd";
            }
        }
    }

But what I really want is detect whether physical SDCard is mounted or not.

I didn't try the code yet, but the approach of Dmitriy Lozenko in this answer is much more interesting. His method returns the path of all mounted SD cards on sytem regardless of the manufacturer.

这篇关于Android 的外部 SDCard 文件路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆