C# Xamarin Android-调用Environment.GetExternalStorageState(文件路径)时发生异常
我无法使用Android.OS.Environment.GetExternalStorageState方法C# Xamarin Android-调用Environment.GetExternalStorageState(文件路径)时发生异常,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,我无法使用Android.OS.Environment.GetExternalStorageState方法 Android.OS.Environment.GetExternalStorageState属性运行正常。但是,为了查询辅助外部SD卡的状态,我需要使用方法(而不是属性)并将路径传递到辅助外部SD卡。调用此方法时,我收到一个.NET异常,如下所示: 没有名为='getExternalStorageState'的静态方法 签名='(Ljava/io/File;)Ljava/lang/Stri
Android.OS.Environment.GetExternalStorageState
属性运行正常。但是,为了查询辅助外部SD卡的状态,我需要使用方法(而不是属性)并将路径传递到辅助外部SD卡。调用此方法时,我收到一个.NET异常,如下所示:
没有名为='getExternalStorageState'的静态方法
签名='(Ljava/io/File;)Ljava/lang/String;'课堂上
Landroid/os/Environment
可靠地再现问题的示例应用程序
请注意,这是在具有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
变量的下一行执行时,将引发异常
另外,仅供参考-抛出的是.NetSystem.Exception
,而不是Java.Lang.Exception
如果这段代码是正确的,并且在某个地方(Xamarin和/或Android)的框架代码中实际上存在一个bug,那么是否有推荐的解决方法来确定SD卡是否可用于读写
没有名为='getExternalStorageState'签名='(Ljava/io/File;)Ljava/lang/String;'的静态方法类内Landroid/os/Environment
字符串getExternalStorageState(文件路径)
已添加到API 21中
回复:这就解释了-我们正在运行KitKat@SteveXamarin的文档在本例中列出了错误的API级别,我倾向于使用Google的文档,因为我知道它们是正确的;-)进行API级别检查,如果