Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android Emulator中模拟真实的外部sd(更新:removable storage)卡_Java_Android_Android Emulator_Android Sdcard - Fatal编程技术网

Java 如何在Android Emulator中模拟真实的外部sd(更新:removable storage)卡

Java 如何在Android Emulator中模拟真实的外部sd(更新:removable storage)卡,java,android,android-emulator,android-sdcard,Java,Android,Android Emulator,Android Sdcard,我尝试模拟一个外部SD卡,就像它在真实设备中一样 在实际设备中,外部SD卡不可写,除非您使用新的“存储访问框架”(API 21和22) 当我添加带有文件或大小的SD卡时 我总是得到一个可写的SD卡,这在真正的设备上是不正确的(我猜)。我可以创建文件夹“CreateFolder”(我知道,我不应该使用直接访问,但这只是为了测试我是否有写访问权限): 你知道如何模拟一个真正的外部SD卡吗?当你设置一个AVD时,它指的是一个“SD卡”,它实际上指的是,而不是。模拟器不模拟可移动存储。您可以查看Ge

我尝试模拟一个外部SD卡,就像它在真实设备中一样

在实际设备中,外部SD卡不可写,除非您使用新的“存储访问框架”(API 21和22)

当我添加带有文件或大小的SD卡时

我总是得到一个可写的SD卡,这在真正的设备上是不正确的(我猜)。我可以创建文件夹“CreateFolder”(我知道,我不应该使用直接访问,但这只是为了测试我是否有写访问权限):


你知道如何模拟一个真正的外部SD卡吗?

当你设置一个AVD时,它指的是一个“SD卡”,它实际上指的是,而不是。模拟器不模拟可移动存储。您可以查看Genymotion是否模拟可移动存储。

访问规则将取决于sd卡是主外部存储还是辅助外部存储。在模拟器或其他设备上,它将是主要的。您想探索它是次要的行为。我不知道模拟器在没有代码级修改的情况下是否支持这种功能。您可能会考虑创建其他文档,以类似的方式对文档进行公开测试。此外,我相信您也可以对主存储使用更抽象的API—即使您也可以直接访问它,因此它实际上只是您无法测试的决策逻辑。谢谢Chris。最后,我想模拟使用API 21和22的新外部存储特性授予的写访问。我想测试新的意图“ACTION OPEN DOCUMENT TREE”以保持对特定文件夹的写访问,但为此,我需要一个不可写的外部存储作为先决条件。我可以买一个带有棒棒糖的新设备,上面有externalstorage插槽,但我认为这应该是可以模拟的。我相信您会发现,您可以使用“ACTION OPEN DOCUMENT TREE”作为模拟器的主要外部存储,以及假设的次要存储。您只需编写程序以仅使用该机制和由此产生的抽象访问机制,而不是通过直接访问文本文件来“欺骗”。ok。谢谢但我不能模拟对文件夹的只读访问,在avd重新启动后使用Intent to persist writeaccess检查写操作,对吗?简单的答案是,如果不尝试持久化,看看会发生什么。感谢您的解释。所以这是我造成的术语混乱。我读了你的参考文章。谢谢,很有趣。我不知道我的理解是否正确。getExternalFilesDirs()是否也返回可移动存储的路径?我已经检查了Genymotion,但没有找到任何可移动存储。但我当然没有检查所有可用的版本。@user1344545:“getExternalFilesDirs()是否也返回到可移动存储的路径?”--在Android 4.4及更高版本上,如果该方法返回2+个条目,则第二个和后续条目应在可移动存储上。@commonware这是正确的,您应该调用
isExternalStorageRemovable(文件)
,以确认它是否可以移动。这是安卓5.0(API 21)(棒棒糖)中添加的。
        String spathWriteTest="/storage/sdcard/";
        new File(spathWriteTest + "createFolder").mkdir();