我无法将Android.OS.Environment.GetExternalStorageState
方法用作outlined here。
Android.OS.Environment.GetExternalStorageState
属性有效。但是,为了查询辅助外部SD卡的状态我需要使用方法(而不是属性)并将路径传递到辅助外部SD卡。调用此方法时,我收到如下的.NET异常:
没有name ='getExternalStorageState'的静态方法 signature ='(Ljava / io / File;)Ljava / lang / String;'在类中 Landroid / OS /环境;
可靠地再现问题的示例应用can be found here。
请注意,这是在具有2张SD卡的设备上。一个是内部(不可移动),是默认的SD卡路径。另一张SD卡是外置SD卡,可拆卸。此测试应用程序假定外部辅助可移动SD卡位于“sdcard1”的根路径,默认内部为“sdcard0”。如果您的设备不同,则可能需要更改此设置。
以下是示例应用程序中CheckState的精简版本。
private bool CheckState(string pathStr)
{
try
{
var path = new File(pathStr);
var otherState = Environment.ExternalStorageState;
var state = Environment.GetExternalStorageState(path);
// Good state - set values and be done
return state.Equals(Environment.MediaMounted);
}
catch (Java.Lang.Exception ex)
{
Debug(Tag, $"Java Ex: {ex.Message}");
}
catch (Exception ex)
{
Debug(Tag, $".Net Ex: {ex.Message}");
}
return false;
}
在上面的示例代码中,otherState
变量设置为内部SD卡的状态。但是当带有state
变量的下一行执行异常时会抛出异常。
此外,作为一个FYI - 抛出的是.Net System.Exception
,而不是Java.Lang.Exception
。
如果这段代码是正确的,并且实际上框架代码中存在一个错误(Xamarin和/或Android),那么是否有建议的工作来确定SD卡是否可用于阅读&写作?
答案 0 :(得分:2)
在 API 21 中添加了没有静态方法,名称='getExternalStorageState'tignra ='(Ljava / io / File;)Ljava / lang / String;'类Landroid / os / Environment;
String getExternalStorageState (File path)
。