Professor, muito obrigado pelo feedback.
Eu tentei de toda forma e só consegui assim:
usei esse tutorial:
https://julianocustodio.com/2017/08/31/camera-xamarin-forms/
e aí dava erro de permissão de câmera ai eu usei o código abaixo para pedir permissão ao abrir o app:
#region RuntimePermissions
void TryToGetPermissions()
{
if ((int)Build.VERSION.SdkInt >= 23)
{
GetPermissions();
return;
}
}
const int RequestLocationId = 0;
readonly string[] PermissionsGroupLocation =
{
//TODO add more permissions
Manifest.Permission.Camera,
Manifest.Permission.ReadExternalStorage,
Manifest.Permission.WriteExternalStorage,
};
void GetPermissions()
{
const string permission = Manifest.Permission.Camera;
if (CheckSelfPermission(permission) == (int)Android.Content.PM.Permission.Granted)
{
//TODO change the message to show the permissions name
//Toast.MakeText(this, "Permissões garantidas!", ToastLength.Short).Show();
return;
}
if (ShouldShowRequestPermissionRationale(permission))
{
//set alert for executing the task
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.SetTitle("Permissões necessárias.");
alert.SetMessage("A aplicação necessita de permissões especiais para continuar.");
alert.SetPositiveButton("Aceitar permissões", (senderAlert, args) =>
{
RequestPermissions(PermissionsGroupLocation, RequestLocationId);
});
alert.SetNegativeButton("Cancelar", (senderAlert, args) =>
{
Toast.MakeText(this, "Cancelado!", ToastLength.Short).Show();
});
Dialog dialog = alert.Create();
dialog.Show();
return;
}
RequestPermissions(PermissionsGroupLocation, RequestLocationId);
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
switch (requestCode)
{
case RequestLocationId:
{
if (grantResults[0] == (int)Android.Content.PM.Permission.Granted)
{
Toast.MakeText(this, "Permissões garantidas!", ToastLength.Short).Show();
}
else
{
//Permission Denied :(
Toast.MakeText(this, "Permissões negadas!", ToastLength.Short).Show();
}
}
break;
}
//base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
#endregion
e no método onCreate do MainActivity do Android ficou assim:
protected override async void OnCreate(Bundle bundle)
{
TryToGetPermissions();
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
await CrossMedia.Current.Initialize();
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
}
Aí funciona tanto tirar foto quanto pegar foto da galeria.
Muito obrigado pela ajuda. Deixei o feedback aí para caso alguém precise.
Abraço.