protected override void OnActivityResult (int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            base.OnActivityResult (requestCode, resultCode, data);

            if (resultCode == Result.Canceled) {
                // Notify user file picking was cancelled.
                OnFilePickCancelled ();
                Finish ();
            } else {
                System.Diagnostics.Debug.Write (data.Data);
                try {
                    var _uri = data.Data;

                    var filePath = IOUtil.getPath (context, _uri);

                    if (string.IsNullOrEmpty (filePath))
                        filePath = _uri.Path;

                    var file = IOUtil.readFile (filePath);

                    var fileName = GetFileName (context, _uri);

                    OnFilePicked (new FilePickerEventArgs (file, fileName, filePath));
                } catch (Exception readEx) {
                    // Notify user file picking failed.
                    OnFilePickCancelled ();
                    System.Diagnostics.Debug.Write (readEx);
                } finally {
                    Finish ();
                }
            }
        }
Ejemplo n.º 2
0
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);

            if (resultCode == Result.Canceled)
            {
                // Notify user file picking was cancelled.
                OnFilePickCancelled();
                Finish();
            }
            else
            {
                System.Diagnostics.Debug.Write(data.Data);
                try {
                    var _uri = data.Data;

                    var filePath = IOUtil.getPath(context, _uri);

                    if (string.IsNullOrEmpty(filePath))
                    {
                        filePath = IOUtil.isMediaStore(_uri.Scheme) ? _uri.ToString() : _uri.Path;
                    }
                    byte[] file;
                    if (IOUtil.isMediaStore(_uri.Scheme))
                    {
                        file = IOUtil.readFile(context, _uri);
                    }
                    else
                    {
                        file = IOUtil.readFile(filePath);
                    }

                    var fileName = GetFileName(context, _uri);

                    OnFilePicked(new FilePickerEventArgs(file, fileName, filePath));
                } catch (Exception readEx) {
                    System.Diagnostics.Debug.Write(readEx);
                    // Notify user file picking failed.
                    FilePickCancelled?.Invoke(
                        this,
                        new FilePickerCancelledEventArgs
                    {
                        Exception = readEx
                    });
                } finally {
                    Finish();
                }
            }
        }