【问题标题】:Android check for SD Card mounted always returns trueAndroid 检查安装的 SD 卡始终返回 true
【发布时间】:2011-10-17 06:39:16
【问题描述】:

我不确定问题的根源是什么 - 带有错误的旧 android 版本或者我做错了什么,但我的问题是无论我做什么,android 都会报告 SD 卡已安装。即使它不在平板电脑中(archos 7o)..

public boolean saveToDisk(String filename, String header) {
    /* first check to see if the SD card is mounted */
    if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
        //throw some exception so we can display an error message 
        // XXX
        return false;
    }
    try {
        File root = Environment.getExternalStorageDirectory();
        File dir = new File(root.getAbsolutePath() + "/bioz");
        if (!dir.exists()) {
            dir.mkdirs();
        }
        File file = new File(dir, filename);
        ....

第一个测试始终为真,getExternalStorageDirectory() 以 /mnt/storage 响应,测试 /mnt/storage/bioz 是否存在表明该目录确实存在。

知道发生了什么吗?我做错了什么,是 API 坏了,还是别的什么?

谢谢, 雷扎

【问题讨论】:

    标签: android storage android-sdcard archos


    【解决方案1】:

    外部存储与 SD 卡不同,至少在所有设备上都不同。具有内部闪存的设备(例如我的 Nexus S)将其视为“外部存储”。

    现在,同时具有内部闪存和 SD 卡的设备,威胁内部闪存作为外部存储器,然后将 SD 卡添加为该外部存储器下的目录。

    从程序员的角度来看,这是一种痛苦,但我们无能为力。

    【讨论】:

    • 我的 Acer Iconia (Android 3.2) 再次以不同的方式对待它,它的内部存储为 /sdcard/ 和 /mnt/sdcard/ 但真正的 SD 卡只出现在 /mnt/external_sd 中
    • @phalacee:感谢您提供的信息。是的,这是 SDK 没有实际意义的一个领域。
    • 那么就写入 SD 卡而言,正确的策略是什么?
    • 我将手机植根并检查了文件系统,似乎它显示为 /mnt/storage/sdcard ——这太烦人了。猜猜解决方案将是特定于设备的......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2019-10-29
    相关资源
    最近更新 更多