`

Android开发中如何获取外置TF卡的路径

 
阅读更多

下面是之前遇到此类问题,网上找的一篇文章解决的,方法验证过,可以解决不同手机多TF卡的情况。

Android获取外部SDcard的官方调用是
Environment.getExternalStorageDirectory()

但是根据不同机型,是有不同的结果的。
如果手机支持TF卡扩展,并且本身没有大容量存储,比如说HTC老款手机 G3之类的,那么获取到的是TF卡的路径。这是对的。
如果手机本身有大容量存储,不论手机是否支持TF卡扩展,比如现在HTC系列高端手机One X,或者920 butterfly系列,那么获取到的是大容量存储的路径。

也就是说,如果手机本身具有大容量存储,又支持TF卡扩展,通过这条命令是无法获取到TF卡信息的。
我查了半天,没有看到明确获取到扩展存储的API方法,如果有,请你告诉我,谢谢。(cst05001 at 狗妹儿)

那么怎么解决这个问题呢。网上有人说用/sdcard/extSdCard路径之类,这是不对的。因为不同的ROM,对外部存储的挂载点是会不一样的。比如三星国行,挂载点是/Storage/extSdCard 

这是我从系统角度想到的解决办法,不用越狱,不用权限。大家可以参考:

     try {

            Runtime runtime = Runtime.getRuntime();

            Process proc = runtime.exec("mount");

            InputStream is = proc.getInputStream();

            InputStreamReader isr = new InputStreamReader(is);

            String line;

            String mount = new String();

            BufferedReader br = new BufferedReader(isr);

            while ((line = br.readLine()) != null) {

                if (line.contains("secure")) continue;

                if (line.contains("asec")) continue;

                

                if (line.contains("fat")) {

                    String columns[] = line.split(" ");

                    if (columns != null && columns.length > 1) {

                        mount = mount.concat("*" + columns[1] + "\n");

                    }

                } else if (line.contains("fuse")) {

                    String columns[] = line.split(" ");

                    if (columns != null && columns.length > 1) {

                        mount = mount.concat(columns[1] + "\n");

                    }

                }

            }

            txtView.setText(mount);

        } catch (FileNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

       }

 

原文地址:http://blog.manhuahe.net/

分享到:
评论

相关推荐

    Android获取外置SD卡路径

    在Android中,我们可以通过反射来调用私有或隐藏的API,以获取外置SD卡路径。以下是一个简单的示例代码: ```java import java.lang.reflect.Method; public class SDDemo { public static String ...

    android手机外置SDcard(TF卡)获取方法

    这些方法返回的路径通常包含TF卡路径。 对于非开发人员,通过手机设置或文件管理器应用来访问TF卡更直观。在大多数Android设备中,用户可以在"存储"设置中查看SDcard的状态和容量。打开文件管理器应用,通常可以...

    android 获取外置SD卡路径

    来获取内置SD卡的路径,但是每款定制过的android 系统的外置SD卡的路径都不一样,那我们怎么才能去获取这个路径呢,我们可以想其它的办法,我这里提供了一个类可以获取外置SD卡或内置SD卡的 label(名称),path(路径)...

    Unity应用获取外置SD卡路径方法

    在Android 6.0(API级别23)及更高版本中,系统对存储访问进行了权限管理,因此获取外置SD卡路径前,需要确保在`AndroidManifest.xml`中添加了相应的权限: ```xml <uses-permission android:name="android....

    获取SD卡 TF卡 内置 外置存储卡路径例子

    3. **SD卡**:在一些设备中,尤其是较旧的,SD卡和内置存储可能混用同一个路径,但在现代设备中,SD卡通常指的是外置TF卡。 获取这些路径的方法通常涉及使用Android的`Environment`类,它提供了获取各种存储路径的...

    Android 获取内外置存储卡

    - 要获取真正的外置SD卡路径,可以尝试使用 `Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)`,然后找到它的父目录,但这并不总是可靠的,因为不同设备可能有不同的结构。...

    android 手机凯立德TF卡改路径版

    凯立德android放外置TF卡专用的修改版 用于i9000 lg p990等有内置SD卡但又想放到外置TF卡上的

    Android设备从外置TF卡文件夹中复制指定文件到到另手机内存文件夹中

    在Android系统中,移动文件是常见的操作,特别是当你...以上就是关于从Android外置TF卡文件夹复制文件到手机内存文件夹的核心知识点。通过理解这些概念和实践,你可以编写出能够有效处理文件转移的Android应用程序。

    Android获取内外置存储卡的方法

    以前的Android(4.1之前的版本)中,SDcard跟路径通过“/sdcard”或者“/mnt/sdcard”来表示存储卡,而在Jelly Bean系统中修改为了“/storage/sdcard0”,以后可能还会有多个SDcard的情况。 目前为了保持和之前代码的...

    sd.rar_SD卡

    1. **SD卡类型**:了解SD卡的类型,如标准SD卡、Micro SD卡(又名TF卡)以及它们的容量和速度等级,这些都是选择适合设备的SD卡时需要考虑的因素。 2. **数据迁移**:在进行内外SD卡交换前,可能需要将数据从一张卡...

    凯立德2012夏季零售懒人包下载地址

    5. **/mnt/sdcard/tflash**:这通常是TF卡的挂载点,也是用于扩展存储空间的。 6. **/nand**:NAND闪存是一种非易失性存储器类型,这里指的是设备内置的NAND闪存分区。 7. **/sdcard2** 和 **/sdcard/sd**:这些路径...

Global site tag (gtag.js) - Google Analytics