Пример #1
0
 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);
 }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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");
            }
        }
Пример #4
0
        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;
                }
            }
        }