Boa tarde.
A função StartActivityForResult só começou a funcionar depois que eu Não deixei habilitado a propriedade da camera.
public void TirarFoto()
{
Intent intent = new Intent(MediaStore.ActionImageCapture);
arquivoImagem = PegarArquivoImagem();
intent.PutExtra(MediaStore.ExtraOutput,
Android.Net.Uri.FromFile(arquivoImagem));
Activity activity = Forms.Context as Activity;
activity.StartActivityForResult(intent, 0);// tentei mudar o valor de zero mas em algumas pesquisas que fiz descobri que não fazia diferença nesse caso
}
Apesar do WRITE_EXTERNAL_STORAGE estar habilitado não funciona a criação da pasta, verifiquei isso usando outro if para verificar se a pasta tinha sido criada.
private static Java.IO.File PegarArquivoImagem()
{
Java.IO.File diretorio = new Java.IO.File
(
Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures),
"Imagens"
);
if (!diretorio.Exists())
diretorio.Mkdirs();
if (!diretorio.Exists())
{
}
return new Java.IO.File(diretorio, "MinhaFoto.jpg");
}
Na Função OnActivityResult ela só é chamada quando eu cancelo a foto, quando clico no ok não faz nada
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode == Result.Ok)
{
MessagingCenter.Send<Java.IO.File>(arquivoImagem, "FotoTirada");
}
if (resultCode == Result.Canceled)
{
}
if (resultCode == Result.FirstUser)
{
}
}