gpt4 book ai didi

c# - Xamarin Android - 调用 Environment.GetExternalStorageState(文件路径)时出现异常

转载 作者:搜寻专家 更新时间:2023-11-01 09:31:20 25 4
gpt4 key购买 nike

我无法使用 Android.OS.Environment.GetExternalStorageState 方法 作为 outlined here .

Android.OS.Environment.GetExternalStorageState 属性 有效。然而,为了查询第二个外部 SD 卡的状态,我需要使用方法(而不是属性)并传入第二个外部 SD 卡的路径。调用此方法时,我收到如下 .NET 异常:

No static method with name=’getExternalStorageState’ signature=’(Ljava/io/File;)Ljava/lang/String;’ in class Landroid/os/Environment;

可靠地重现问题的示例应用程序 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 变量的下一行时,将抛出异常。

此外,仅供引用 - 抛出的是 .Net System.Exception,而不是 Java.Lang.Exception

如果此代码是正确的,并且框架代码中某处(Xamarin 和/或 Android)实际上存在错误,那么是否有推荐的变通方法来确定 SD 卡是否可用于读写?

最佳答案

No static method with name=’getExternalStorageState’ signature=’(Ljava/io/File;)Ljava/lang/String;’ in class Landroid/os/Environment;

String getExternalStorageState(文件路径) 已添加到 API 21 中。

回复:https://developer.android.com/reference/android/os/Environment.html#getExternalStorageState(java.io.File)

关于c# - Xamarin Android - 调用 Environment.GetExternalStorageState(文件路径)时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47042506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com