private Tuple <SendType, string, byte[], string> GetCreateSendRequest(Intent intent) { if (intent.Action == Intent.ActionSend && intent.Type != null) { var type = intent.Type; if (type.Contains("text/")) { var subject = intent.GetStringExtra(Intent.ExtraSubject); var text = intent.GetStringExtra(Intent.ExtraText); return(new Tuple <SendType, string, byte[], string>(SendType.Text, subject, null, text)); } else { var data = intent.ClipData?.GetItemAt(0); var uri = data?.Uri; var filename = AndroidHelpers.GetFileName(ApplicationContext, uri); try { using (var stream = ContentResolver.OpenInputStream(uri)) using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); return(new Tuple <SendType, string, byte[], string>(SendType.File, filename, memoryStream.ToArray(), null)); } } catch (Java.IO.FileNotFoundException) { } } } return(null); }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { if (resultCode == Result.Ok && (requestCode == Constants.SelectFileRequestCode || requestCode == Constants.SaveFileRequestCode)) { Android.Net.Uri uri = null; string fileName = null; if (data != null && data.Data != null) { uri = data.Data; fileName = AndroidHelpers.GetFileName(ApplicationContext, uri); } else { // camera var file = new Java.IO.File(FilesDir, "temp_camera_photo.jpg"); uri = FileProvider.GetUriForFile(this, "com.x8bit.bitwarden.fileprovider", file); fileName = $"photo_{DateTime.UtcNow.ToString("yyyyMMddHHmmss")}.jpg"; } if (uri == null) { return; } if (requestCode == Constants.SaveFileRequestCode) { _messagingService.Send("selectSaveFileResult", new Tuple <string, string>(uri.ToString(), fileName)); return; } try { using (var stream = ContentResolver.OpenInputStream(uri)) using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); _messagingService.Send("selectFileResult", new Tuple <byte[], string>(memoryStream.ToArray(), fileName ?? "unknown_file_name")); } } catch (Java.IO.FileNotFoundException) { return; } } else if (resultCode == Result.Ok && Enum.IsDefined(typeof(Fido2CodesTypes), requestCode)) // Check if any event or result to this activity as information about FIDO2 { // Send the event code and the data to the FIDO2 Services to be process Fido2Service.INSTANCE.OnActivityResult(requestCode, resultCode, data); } }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { if (resultCode == Result.Ok && (requestCode == Constants.SelectFileRequestCode || requestCode == Constants.SaveFileRequestCode)) { Android.Net.Uri uri = null; string fileName = null; if (data != null && data.Data != null) { uri = data.Data; fileName = AndroidHelpers.GetFileName(ApplicationContext, uri); } else { // camera var file = new Java.IO.File(FilesDir, "temp_camera_photo.jpg"); uri = FileProvider.GetUriForFile(this, "com.x8bit.bitwarden.fileprovider", file); fileName = $"photo_{DateTime.UtcNow.ToString("yyyyMMddHHmmss")}.jpg"; } if (uri == null) { return; } if (requestCode == Constants.SaveFileRequestCode) { _messagingService.Send("selectSaveFileResult", new Tuple <string, string>(uri.ToString(), fileName)); return; } try { using (var stream = ContentResolver.OpenInputStream(uri)) using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); _messagingService.Send("selectFileResult", new Tuple <byte[], string>(memoryStream.ToArray(), fileName ?? "unknown_file_name")); } } catch (Java.IO.FileNotFoundException) { return; } } else if (resultCode == Result.Ok && requestCode == REQUEST_CODE_SIGN) { var signResponseData = data.GetParcelableExtra(Fido.KeyResponseExtra); Log.Info("bitwarden-u2f", "FIDO Activity received"); } }
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { if (requestCode == Constants.SelectFileRequestCode && resultCode == Result.Ok) { Android.Net.Uri uri = null; string fileName = null; if (data != null && data.Data != null) { uri = data.Data; fileName = AndroidHelpers.GetFileName(ApplicationContext, uri); } else { // camera var root = new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory, "bitwarden"); var file = new Java.IO.File(root, "temp_camera_photo.jpg"); uri = Android.Net.Uri.FromFile(file); fileName = $"photo_{DateTime.UtcNow.ToString("yyyyMMddHHmmss")}.jpg"; } if (uri == null) { return; } try { using (var stream = ContentResolver.OpenInputStream(uri)) using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); _messagingService.Send("selectFileResult", new Tuple <byte[], string>(memoryStream.ToArray(), fileName ?? "unknown_file_name")); } } catch (Java.IO.FileNotFoundException) { return; } } }