Как отсортировать массив Uri по дате / времени? - PullRequest
0 голосов
/ 03 ноября 2019

Можно ли отсортировать массив, содержащий Uri, по дате / времени?

Uri в моем массиве выглядит так:

content: // media / external / images /media / 65

Я пробовал Collections.sort(), но это было невозможно с Uri []

Редактировать: My Uri указывает на сохраненное изображениена устройстве. Я хочу отсортировать изображения по дате и времени и показать их отсортированными в GridView.

1 Ответ

1 голос
/ 04 ноября 2019

Вы можете запросить преобразователь содержимого для измененного времени.

Uri uri = Uri.parse("content://media/external/images/media/65");

                String projection [] = { 
                          MediaStore.Images.Media.DATA
                        , MediaStore.Images.Media.DISPLAY_NAME
                        , MediaStore.Images.Media.SIZE
                        , MediaStore.Images.Media.MIME_TYPE
                        , MediaStore.Images.Media.DATE_MODIFIED
                        , DocumentsContract.Document.COLUMN_LAST_MODIFIED
                        };
                Cursor cursor = getContentResolver().query(uri, projection, null, null, null);

                if ( cursor==null)
                {   

                return; 
                }

                cursor.moveToFirst();

                String data        = cursor.getString(0);
                String displayName = cursor.getString(1);
                String size        = cursor.getString(2);
                String mimeType    = cursor.getString(3);
                String dateModified    = cursor.getString(4); // null
                String dateModified2    = cursor.getString(5);

                Toast.makeText(context,
                             "DISPLAY_NAME: " + displayName
                            + "\nDATA: " + data
                            + "\nSIZE: " + size
                                + "\nmimeType: " + mimeType
                                + "\n" +MediaStore.Images.Media.DATE_MODIFIED + ": " + dateModified
                                + "\n" +DocumentsContract.Document.COLUMN_LAST_MODIFIED + ": " + dateModified2
                            , Toast.LENGTH_LONG).show();
                cursor.close();         

Даже Uris из хранилища мультимедиа доставляет ноль для MediaStore.Images.Media.DATE_MODIFIED ("date_modified"), следовательно, DocumentsContract.Document.COLUMN_LAST_MODIFIED ("last_modified"), что хорошо для всех.

Добавьте попытку и несколько блоков catch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...