Android System.getenv(“辅助存储”)使用AVD返回null
我在Windows7上使用Android Studio 1.5。我创建了一个模拟Nexus_5_API_21的AVD。我指定了一个2GB的SD卡。我已将一个文件复制到SD卡上。为什么System.getenv(“辅助存储”)返回nullAndroid System.getenv(“辅助存储”)使用AVD返回null,android,Android,我在Windows7上使用Android Studio 1.5。我创建了一个模拟Nexus_5_API_21的AVD。我指定了一个2GB的SD卡。我已将一个文件复制到SD卡上。为什么System.getenv(“辅助存储”)返回null 我相信你现在一定已经意识到我有多绿了。还有一个事实。此代码适用于SD卡上有文件的真实手机。请尝试以下操作: String strSDCardPath = System.getenv("SECONDARY_STORAGE"); if ((null == strSD
我相信你现在一定已经意识到我有多绿了。还有一个事实。此代码适用于SD卡上有文件的真实手机。请尝试以下操作:
String strSDCardPath = System.getenv("SECONDARY_STORAGE");
if ((null == strSDCardPath) || (strSDCardPath.length() == 0)) {
strSDCardPath = System.getenv("EXTERNAL_SDCARD_STORAGE");
}
另请阅读以下内容以供参考:
这是解决方案。
试试看
首先获取列表中的所有文件
var file=new Java.IO.File("storage/");
var listOfStorages=file.ListFiles();
var isSDPresent=false;
if(listOfStorages[1].Name.Containes("emmulated")
||listOfStorages[0].Name.Containes("-") )
{
isSDPresent=true;
}
既然没有文档说明Android上存在这样的环境变量,为什么您希望它不是
null
?此外,AVD的“SD卡”型号不是。@commonware虽然没有关于辅助存储的文档,但它在框架中使用:它也用于许多流行的文件管理器应用程序。我假设SD卡实际上是内部存储(不是可移动的SD)。您应该改用Environment.getExternalStorageDir()
。