Вы столкнулись с проблемой разрешений.
Для начала вам нужно добавить в AndroidManifest:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
А начиная с Android Marshmallow, вам нужно спросить пользователя о разрешениях, поэтому я советую использовать пакет Permissions.Plugin
И добавьте в свой MainActivity:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
Вы можете проверить во время выполнения, если у вас есть права доступа:
var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage);
if (status != PermissionStatus.Granted)
{
if(await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Storage))
{
await DisplayAlert("Need storage, "Request storage permission", "OK");
}
var results = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Storage);
//Best practice to always check that the key exists
if(results.ContainsKey(Permission.Storage))
status = results[Permission.Storage];
}
Для получения дополнительной информации вы можете проверить это сообщение в блоге, объясняющее все разрешения в Android - https://blog.xamarin.com/requesting-runtime-permissions-in-android-marshmallow/