Я использую Storage Access Framework в Android для выбора изображений и загрузки в свое приложение. Перед загрузкой этих изображений на свой сервер я также обрабатываю эти изображения (изменяю размер). Однако в URI, возвращаемом SAF, не добавлено расширение, я не знаю, как получить расширение файла. Мне нужно различать png и jpeg. Как я могу этого добиться? Пример uri, возвращенного из SAF - content://com.android.providers.media.documents/document/image%3A245309

Мой код выглядит примерно так


if (resultData != null) {
                        final ClipData clipData = resultData.getClipData();
                        int takeFlags = resultData.getFlags();
                        takeFlags &= (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                        ArrayList<Uri> uris = new ArrayList<Uri>();
                        if(clipData != null){
                            for (int i = 0; i < clipData.getItemCount(); i++) {
                                ClipData.Item item = clipData.getItemAt(i);
                                Uri dataUri = item.getUri();
                                if (dataUri != null) {
                                    uris.add(dataUri);
                                    Log.d(TAG, "File URI : " + dataUri.toString());
                                }
                            }
                        }else{
                            Uri dataUri = resultData.getData();
                            if (dataUri != null) {
                                uris.add(dataUri);
                            }
                        }
                        processFiles(uris);
                }
3
Daga Arihant 24 Июл 2020 в 23:17

2 ответа

Лучший ответ

Мне нужно различать png и jpeg. Как я могу этого добиться?

Позвоните getType() на ContentResolver, переходящий в Uri. Это вернет тип MIME, связанный с содержимым, например image/png.

3
CommonsWare 24 Июл 2020 в 20:55

Использовать Simple Storage намного проще:

MediaFile file = new MediaFile(context, uri);
String extension = file.getExtension();
0
Anggrayudi H 18 Дек 2020 в 17:27