I'm trying to save an image attached to a variable to send by mail but I get this error:
Unable to convert from 'Android.Net.Uri' to 'string'
I send code where I get an error:
if (uris != null)
{
var filePath = System.IO.Path.Combine(uris, "");
var File = new Java.IO.File(filePath);
var path = Uri.FromFile(File);
mail.Attachments.Add(new Attachment(Android.Content.Intent.ExtraStream, path));
}
Complete code:
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
base.OnCreateView(inflater, container, savedInstanceState);
textView = inflater.Inflate(Resource.Layout.Autorizaciones, container, false);
textView.FindViewById<TextView>(Resource.Id.txtAutoNombre).Text = mTxtNombre;
textView.FindViewById<TextView>(Resource.Id.txtAutoCedula).Text = mTxtCedula;
imageView = textView.FindViewById<ImageView>(Resource.Id.ImgMostrarFotos);
Adjuntar = textView.FindViewById<Button>(Resource.Id.btnCamara);
Enviar = textView.FindViewById<Button>(Resource.Id.btnEnviar);
Enviar.Visibility = ViewStates.Invisible;
imageView.Visibility = ViewStates.Invisible;
Adjuntar.Click += delegate
{
var imageIntent = new Intent();
imageIntent.SetType("image/*");
imageIntent.SetAction(Intent.ActionGetContent);
StartActivityForResult(Intent.CreateChooser(imageIntent, "Select photo"), 0);
};
Enviar.Click += delegate
{
try
{
string smtpAddress = "smtp.gmail.com";
int portNumber = 587;
bool enableSSL = true;
string emailFrom = "[email protected]";
string password = "xxxxxxxxxxxx";
string emailTo = "[email protected]";
string subject = "Tramite Autorización "+ mTxtNombre;
string body = "Hello, Mr."+mTxtCedula;
MailMessage mail = new MailMessage();
mail.From = new MailAddress(emailFrom);
mail.To.Add(emailTo);
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
if (uris != null)
{
var filePath = System.IO.Path.Combine(uris, "");
var File = new Java.IO.File(filePath);
var path = Uri.FromFile(File);
mail.Attachments.Add(new Attachment(Android.Content.Intent.ExtraStream, path));
}
using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber))
{
smtp.Credentials = new NetworkCredential(emailFrom, password);
smtp.EnableSsl = enableSSL;
smtp.Send(mail);
}
Toast.MakeText(Activity, "Mensaje Enviado" , ToastLength.Short).Show();
}
catch (Exception ex)
{
Toast.MakeText(Activity, "Mensaje Fallido" +ex, ToastLength.Short).Show();
}
};
return textView;
}
public override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode == Result.Ok)
{
imageView = textView.FindViewById<ImageView>(Resource.Id.ImgMostrarFotos);
imageView.SetImageURI(data.Data);
imageView.Visibility = ViewStates.Visible;
uris = GetPathToImage(data.Data);
Enviar.Visibility = ViewStates.Visible;
}
}
private string GetPathToImage(Uri uri )
{
string doc_id = "";
using (var c1 = Application.Context.ContentResolver.Query(uri, null, null, null, null))
{
c1.MoveToFirst();
System.String document_id = c1.GetString(0);
doc_id = document_id.Substring(document_id.LastIndexOf(":") + 1);
}
string path = null;
string selection = Android.Provider.MediaStore.Images.Media.InterfaceConsts.Id + " =? ";
using (var cursor = Application.Context.ContentResolver.Query(Android.Provider.MediaStore.Images.Media.ExternalContentUri, null, selection, new string[] { doc_id }, null))
{
if (cursor == null) return path;
var columnIndex = cursor.GetColumnIndexOrThrow(Android.Provider.MediaStore.Images.Media.InterfaceConsts.Data);
cursor.MoveToFirst();
path = cursor.GetString(columnIndex);
}
return path;
}
public override void OnActivityCreated(Bundle savedInstanceState)
{
Dialog.Window.RequestFeature(WindowFeatures.NoTitle);
base.OnActivityCreated(savedInstanceState);
Dialog.Window.Attributes.WindowAnimations = Resource.Style.dialog_animation;
}