Как получить идентификатор документа из Uri в MediaStore: простое руководство

Если вы разработчик Android и работаете с MediaStore, вы можете столкнуться с ситуацией, когда вам нужно получить идентификатор документа из Uri. В этой статье блога мы рассмотрим несколько способов выполнения этой задачи, используя простой язык и примеры кода.

Метод 1: разделение Uri
Один простой подход — разделить строку Uri и извлечь идентификатор документа. Вот пример:

public String getDocumentIdFromUri(Uri uri) {
    String[] parts = uri.toString().split("/");
    return parts[parts.length - 1];
}

Метод 2: запрос ContentResolver
Другой способ получить идентификатор документа — использовать запрос ContentResolver. Этот метод полезен, когда у вас есть более сложные требования, такие как фильтрация по типу MIME или другим критериям. Вот пример:

public String getDocumentIdFromUri(Uri uri) {
    String documentId = null;
    ContentResolver contentResolver = getContentResolver();
    Cursor cursor = contentResolver.query(uri, null, null, null, null);
    if (cursor != null && cursor.moveToFirst()) {
        int index = cursor.getColumnIndex(MediaStore.MediaColumns._ID);
        documentId = cursor.getString(index);
        cursor.close();
    }
    return documentId;
}

Метод 3: API DocumentContract
Начиная с уровня Android API 19 (KitKat), вы также можете использовать API DocumentContract для получения идентификатора документа. Вот пример:

public String getDocumentIdFromUri(Uri uri) {
    String documentId = null;
    String authority = uri.getAuthority();
    String[] split = uri.getPath().split("/");
    if (split.length >= 2) {
        String type = split[1];
        if ("document".equals(type)) {
            documentId = split[2];
        }
    }
    return documentId;
}

В этой статье мы обсудили три метода получения идентификатора документа из Uri в MediaStore. Первый метод включает разделение строки Uri, второй метод использует запрос ContentResolver, а третий метод использует API DocumentContract. В зависимости от ваших конкретных требований вы можете выбрать метод, который лучше всего соответствует вашим потребностям.

Следуя этим методам, вы сможете легко извлечь идентификатор документа из Uri в MediaStore, что позволит вам работать с нужными документами в вашем приложении Android.