Xamarin.Android UnauthorizedAccessException: Access to the path is denied

进行文件读写,勾选了权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

依然报错

Access to the path 'xxx' is denied

原因:
根据所使用的Android版本的不同,即使在6.0或更高版本的清单中添加了权限,用户也必须在应用运行时显式启用该权限,而在较低版本中则需要在安装过程中请求该权限。 例如,在启动应用程序时,创建一种方法来检查它是否已启用,未启用则请求启用它的权限。

private void CheckAppPermissions()
{
    if ((int)Build.VERSION.SdkInt < 23)
    {
        return;
    }
    else
    {
        if (PackageManager.CheckPermission(Manifest.Permission.ReadExternalStorage, PackageName) != Permission.Granted
            && PackageManager.CheckPermission(Manifest.Permission.WriteExternalStorage, PackageName) != Permission.Granted)
        {
            var permissions = new string[] { Manifest.Permission.ReadExternalStorage, Manifest.Permission.WriteExternalStorage };
            RequestPermissions(permissions, 1);
        }
    }
}

也可以使用支持库来执行此操作,该库更简单,并且无需检查Android版本。 有关更多信息,请查阅Google文档

参考资料

Xamarin-System.UnauthorizedAccessException: Access to the path is denied

上一篇:通过INotifyPropertyChanged的MvvmCross自定义绑定


下一篇:c#-使用MonoTouch创建自定义图像滤镜