Example #1
0
        private void ProcessAttachment()
        {
            if (Intent.Action.Equals(Intent.ActionView))
            {
                try
                {
                    Android.Net.Uri uri      = Intent.Data;
                    string          scheme   = uri.Scheme;
                    string          mimetype = ContentResolver.GetType(uri);

                    if ((ContentResolver.SchemeFile == "file") && (mimetype == "application/octet-stream"))
                    {
                        startupByAttachment = true;

                        System.IO.Stream       stream = ContentResolver.OpenInputStream(uri);
                        System.IO.StreamReader sr     = new System.IO.StreamReader(stream);

                        var serializer = new JsonSerializer();

                        using (var jst = new JsonTextReader(sr))
                        {
                            message = serializer.Deserialize <SeriousWalletTransactionMessage>(jst);
                        }
                    }
                    else
                    {
                        Finish();
                    }
                }
                catch (System.Exception e)
                {
                    //@@todo write exception to log
                }
            }
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            //SetContentView (Resource.Layout.Main);
            var dbUri = Intent.GetParcelableExtra("dbUri") as Uri;

            if (dbUri != null)
            {
                var mimeType     = ContentResolver.GetType(dbUri);
                var returnCursor = ContentResolver.Query(dbUri, null, null, null, null);

                var nameIndex = returnCursor.GetColumnIndex(OpenableColumns.DisplayName);
                var sizeIndex = returnCursor.GetColumnIndex(OpenableColumns.Size);
                returnCursor.MoveToFirst();
                var filename = returnCursor.GetString(nameIndex);
                var fileSize = returnCursor.GetString(sizeIndex);

                using (var stream = ContentResolver.OpenInputStream(dbUri))
                {
                    var length        = int.Parse(fileSize);
                    var buffer        = new byte[length];
                    var contents      = stream.Read(buffer, 0, length);
                    var contentParsed = System.Text.Encoding.ASCII.GetString(buffer);
                }
            }
        }
Example #3
0
 public static byte[] GetSelectedMediaData(Activity activity, Android.Net.Uri uri)
 {
     try
     {
         string          path = string.Empty;
         ContentResolver cr   = activity.ContentResolver;
         string          type = cr.GetType(uri);
         if (type.Contains("video"))
         {
             MediaMetadataRetriever retriever = new MediaMetadataRetriever();
             retriever.SetDataSource(activity, uri);
             string duration = retriever.ExtractMetadata(MetadataKey.Duration);
             retriever.Release();
             if (!string.IsNullOrEmpty(duration))
             {
                 if (Convert.ToInt32(duration) > 30000)
                 {
                     path = VideoHelper.Trim(1, 30000, VideoHelper.GetMediaRealPath(activity, uri));
                     return(System.IO.File.ReadAllBytes(path));
                 }
             }
         }
         var stream = activity.ContentResolver.OpenInputStream(uri);
         return(stream.ReadAsBytes());
     }
     catch (System.Exception ex)
     {
         return(null);
     }
 }
 public static void GetMetadataFromContentURI(this Android.Net.Uri uri, ContentResolver contentResolver, out long size, out string fileName)
 {
     using (var fd = contentResolver.OpenFileDescriptor(uri, "r"))
         size = fd.StatSize;
     using (var cursor = contentResolver.Query(uri, new string[] {
         Android.Provider.OpenableColumns.DisplayName
     }, null, null, null))
     {
         cursor.MoveToFirst();
         fileName = GetFixedFileName(cursor.GetString(0), contentResolver.GetType(uri));
     }
 }
        public byte[] GetImageData()
        {
            ClipboardManager clipboard = (ClipboardManager)Forms.Context.GetSystemService(Context.ClipboardService);
            ContentResolver  cr        = Forms.Context.ContentResolver;
            ClipData         clip      = clipboard.PrimaryClip;

            byte[] p = null;
            if (clip != null)
            {
                // Gets the first item from the clipboard data
                ClipData.Item item = clip.GetItemAt(0);

                // Tries to get the item's contents as a URI
                Android.Net.Uri pasteUri = item.Uri;
                // If the clipboard contains a URI reference
                if (pasteUri != null)
                {
                    // Is this a content URI?
                    String uriMimeType = cr.GetType(pasteUri);

                    // If the return value is not null, the Uri is a content Uri
                    if (uriMimeType != null)
                    {
                        // Does the content provider offer a MIME type that the current application can use?
                        if (uriMimeType.StartsWith("image/"))
                        {
                            // Get the data from the content provider.
                            ICursor pasteCursor = cr.Query(pasteUri, null, null, null, null);

                            // If the Cursor contains data, move to the first record
                            if (pasteCursor != null)
                            {
                                if (pasteCursor.MoveToFirst())
                                {
                                    p = pasteCursor.GetBlob(0);
                                }
                            }

                            // close the Cursor
                            pasteCursor.Close();
                        }
                    }
                }
            }
            return(p);
        }
Example #6
0
    public string getMimeType(Android.Net.Uri uri)
    {
        string mime_type = null;

        if (uri.Scheme.Equals(ContentResolver.SchemeContent))
        {
            ContentResolver cr = MainActivity.Instance.ContentResolver;
            mime_type = cr.GetType(uri);
        }
        else
        {
            string ext = MimeTypeMap.GetFileExtensionFromUrl(uri.ToString());
            mime_type = MimeTypeMap.Singleton.GetMimeTypeFromExtension(ext.ToLower());
        }
        if (mime_type == null)
        {
            mime_type = "*/*";
        }
        return(mime_type);
    }
Example #7
0
        public static string GetMediaRealPath(Activity activity, Android.Net.Uri uri)
        {
            ContentResolver cr   = activity.ContentResolver;
            string          type = cr.GetType(uri);

            if (type.Contains("video"))
            {
                string[] projection = { MediaStore.Video.VideoColumns.Data };
                var      cursor     = activity.ContentResolver.Query(uri, projection, null, null, null);
                if (cursor != null)
                {
                    // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
                    // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
                    int column_index = cursor.GetColumnIndex(MediaStore.Video.VideoColumns.Data);
                    cursor.MoveToFirst();
                    return(cursor.GetString(column_index));
                }
                else
                {
                    return(null);
                }
            }
            else if (type.Contains("audio"))
            {
                string[] projection = { MediaStore.Audio.AudioColumns.Data };
                var      cursor     = activity.ContentResolver.Query(uri, projection, null, null, null);
                if (cursor != null)
                {
                    // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
                    // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
                    int column_index = cursor.GetColumnIndex(MediaStore.Audio.AudioColumns.Data);
                    cursor.MoveToFirst();
                    return(cursor.GetString(column_index));
                }
                else
                {
                    return(null);
                }
            }
            return(null);
        }
Example #8
0
        private void LoadMedia(Android.Net.Uri uri)
        {
            //string[] nameParts = path.Split (".".ToCharArray ());
            //string filetype = nameParts [nameParts.Length - 1];
            //string filetype = nameParts[nameParts.Length - 1]; //might be whole filename...

            //http://stackoverflow.com/questions/12473851/how-i-can-get-the-mime-type-of-a-file-having-its-uri
            ContentResolver cR = this.ContentResolver;
            //MimeTypeMap mime = MimeTypeMap.Singleton;
            string filetype = cR.GetType(uri);

            aCrossHairView.locationArr.Clear();
            aCrossHairView.Invalidate();
            //resultTextView.SetText (Resource.String.resultTextView_title);
            scaleButton.Enabled   = true;
            computeButton.Enabled = false;
            switch (filetype.Split('/')[0])
            {
            case "video":
                vView.SetVideoURI(uri);
                mediaUri           = uri;
                iView.Visibility   = ViewStates.Invisible;
                vView.Visibility   = ViewStates.Visible;
                playButton.Enabled = true;
                break;

            case "image":
                iView.SetImageURI(uri);
                mediaUri = uri;

                iView.Visibility   = ViewStates.Visible;
                vView.Visibility   = ViewStates.Invisible;
                playButton.Enabled = false;
                break;

            default:
                Console.WriteLine(filetype);
                break;
            }
        }
Example #9
0
        public bool CheckType(ContentResolver resolver, Uri uri)
        {
            MimeTypeMap map = MimeTypeMap.Singleton;

            if (uri == null)
            {
                return(false);
            }
            string type = map.GetExtensionFromMimeType(resolver.GetType(uri));

            foreach (string extension in mExtensions)
            {
                if (extension.Equals(type))
                {
                    return(true);
                }
                string path = PhotoMetadataUtils.GetPath(resolver, uri);
                if (path != null && path.ToLower().EndsWith(extension))
                {
                    return(true);
                }
            }
            return(false);
        }
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent intent)
        {
            base.OnActivityResult(requestCode, resultCode, intent);

            if (requestCode == PickImageId)
            {
                try
                {
                    if ((resultCode == Result.Ok) && (intent != null))
                    {
                        Android.Net.Uri uri       = intent.Data;
                        Stream          stream    = ContentResolver.OpenInputStream(uri);
                        string          extension = MimeTypeMap.Singleton.GetExtensionFromMimeType(ContentResolver.GetType(uri));

                        // Set the result as the completion of the Task
                        PickImageTaskCompletionSource.SetResult(new PickImageResult()
                        {
                            Stream    = stream,
                            Extension = extension
                        });
                    }
                    else
                    {
                        PickImageTaskCompletionSource.SetResult(null);
                    }
                }
                catch (Exception ex)
                {
                    PickImageTaskCompletionSource.SetException(ex);
                }
            }
        }
Example #11
0
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent intent)
        {
            base.OnActivityResult(requestCode, resultCode, intent);

            if (requestCode == PickImageId)
            {
                if (PickImageTaskCompletionSource == null)
                {
                    TelemetryExtension.Current?.TrackException(new InvalidOperationException("PickImageTaskCompletionSource was null, app must have dehydrated while picking images"));
                    return;
                }

                PickImageResult result;

                try
                {
                    if ((resultCode == Result.Ok) && (intent != null))
                    {
                        Android.Net.Uri uri       = intent.Data;
                        Stream          stream    = ContentResolver.OpenInputStream(uri);
                        string          extension = MimeTypeMap.Singleton.GetExtensionFromMimeType(ContentResolver.GetType(uri));

                        result = new PickImageResult()
                        {
                            Stream    = stream,
                            Extension = extension
                        };
                    }
                    else
                    {
                        result = null;
                    }
                }
                catch (Exception ex)
                {
                    try
                    {
                        PickImageTaskCompletionSource.SetException(ex);
                    }
                    catch
                    {
                        TelemetryExtension.Current?.TrackException(ex);
                    }
                    return;
                }

                // Set the result as the completion of the Task
                try
                {
                    PickImageTaskCompletionSource.SetResult(result);
                }
                catch (Exception ex)
                {
                    TelemetryExtension.Current?.TrackException(ex);
                }
            }
        }