Quando eu clico no botão de tirar foto ele me apresenta o seguinte erro Android.OS.FileUriExposedException: 'file:///storage/emulated/0/Pictures/Imagens/MinhaFoto.jpg exposed beyond app through ClipData.Item.getUri()'
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity, ICamera
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
}
static Java.IO.File arquivoImagem;
[Obsolete]
public void TirarFoto()
{
Intent intent = new Intent(MediaStore.ActionImageCapture);
arquivoImagem = PegarArquivoImagem();
intent.PutExtra(MediaStore.ExtraOutput,
Android.Net.Uri.FromFile(arquivoImagem));
var activity = Forms.Context as Activity;
activity.StartActivityForResult(intent, 0);
}
private static Java.IO.File PegarArquivoImagem()
{
Java.IO.File arquivoImagem;
Java.IO.File diretorio = new Java.IO.File(
global::Android.OS.Environment.GetExternalStoragePublicDirectory(
global::Android.OS.Environment.DirectoryPictures), "Imagens");
if (!diretorio.Exists())
diretorio.Mkdirs();
arquivoImagem =
new Java.IO.File(diretorio, "MinhaFoto.jpg");
return arquivoImagem;
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode == Result.Ok)
{
byte[] bytes;
using (var stream = new Java.IO.FileInputStream(arquivoImagem))
{
bytes = new byte[arquivoImagem.Length()];
stream.Read(bytes);
}
MessagingCenter.Send<byte[]>(bytes, "FotoTirada");
}
}
}
}