2011-03-02 30 views
2

我一直在使用android模拟器与安装的SD卡几个星期,现在没有问题。今天我开始我的应用程序,当我的活动试图访问/ mnt/sdcard时,它会崩溃并出现NullPointerException异常。我检查DDMS文件浏览器和/ mnt/sdcard似乎是空的。我尝试将文件推送到它上面,但它是只读的,权限是d ---------。有这两条线在logcat的输出的开头:Android模拟器SD卡突然只读(未能挂载?)

D/Vold ( 29): Volume sdcard state changing -1 (Initializing) -> 0 (No-Media) 
D/Vold ( 29): Volume sdcard state changing 0 (No-Media) -> 1 (Idle-Unmounted) 

所以我把它意味着sdcard.img突然无法安装出于某种原因。任何想法,为什么会这样?

+0

确保你已经在你的清单文件设置权限<使用许可权的android:NAME =“android.permission.WRITE_EXTERNAL_STORAGE” /> – esse 2012-02-13 19:56:45

回答

3

打开一个shell到模拟器

adb shell 

然后键入以下命令:

mount -o remount,rw /sdcard 

是否现在的工作?

+0

清楚,很简单 – herpderp 2011-03-03 00:40:37

+0

我很想知道为什么会这样愚蠢的错误发生地点。我刚刚在2.3.3模拟器上看到它 – 2012-04-10 07:41:34

+0

该错误特别讨厌,因为您创建的每个新仿真程序仍包含只读/ sdcard – 2012-04-10 07:48:33

0

我在命令mount -o remount,rw /sdcard上输出消息“Invalid argument。”。所以 我移动了文件夹“android-sdk”,以便路径名中没有空格。

1

也许你会忘记为你的SD卡分配内存。去Android虚拟设备管理器和编辑您的模拟器设置那里设置您的SD卡大小为512MB.It为我工作。

1

我也遭受了两天跟踪这个问题。

  1. 我忘记为我的SD卡分配内存。转到Android虚拟设备管理器并编辑仿真器设置,将SD卡的大小设置为128mb。

  2. 检查AndroidMenifest.xml设置权限

  3. 使用下面的程序代码来测试文件操作

    std::FILE* file = std::fopen("/sdcard/hello.txt","w+"); 
    if (file != NULL)  
    { 
        std::fputs("HELLO WORLD!\n", file); 
        std::fflush(file); 
        std::fclose(file); 
    } 
    
  4. 运行仿真器中的可执行程序, 然后使用“亚行shell ls/sdcard“来检查文件”hello.txt“是否已经创建。