Это правильный способ вывода списка PDF-файлов с устройства?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Это правильный способ вывода списка PDF-файлов с устройства?

Сообщение Anonymous »


Я хочу вывести список всех PDF-файлов на устройстве, следующий код работает на некоторых устройствах, а на других не работает, размер списка равен нулю.

У меня есть все необходимые разрешения, Протестировал на API 31 и 33, работает нормально, протестировал на API 27 и 34, вообще не работает, может кто-нибудь указать мне правильное направление, что мне делать.

Любая помощь будет очень признательна.

Вот код
private fun getAllPDFFromStorage(ctx: Context): ArrayList { val pdfList = ArrayList() val проекция = arrayOf( MediaStore.Files.FileColumns._ID, MediaStore.Files.FileColumns.DISPLAY_NAME, MediaStore.Files.FileColumns.DATA, MediaStore.Files.FileColumns.DATE_MODIFIED, MediaStore.Files.FileColumns.MIME_TYPE, MediaStore.Files.FileColumns.SIZE ) val sortOrder = "${MediaStore.Files.FileColumns.DATE_MODIFIED} DESC" val choice = "${MediaStore.Files.FileColumns.MIME_TYPE} =?" val mimeTypePdf = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf") valselectionArgs = arrayOf(mimeTypePdf) коллекция val: Uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL) } еще { MediaStore.Files.getContentUri("внешний") } val курсор = ctx.contentResolver.query(коллекция, проекция, выбор, выборArgs, sortOrder) курсор?.use { в то время как (it.moveToNext()) { val id = it.getLong(it.getColumnIndexOrThrow(MediaStore.Files.FileColumns._ID)) val путь = it.getString(it.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA)) val dirName = File(path).parentFile?.name ?: "" val name = it.getString(it.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DISPLAY_NAME)) val date = it.getLong(it.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATE_MODIFIED)) val size = it.getString(it.getColumnIndexOrThrow(MediaStore.Files.FileColumns.SIZE)) val contentUri: Uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { Uri.withAppendedPath(MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL), id.toString()) } еще { Uri.withAppendedPath(MediaStore.Files.getContentUri("external"), id.toString()) } if (size != null && File(path).exists()) { val pdfFile = PdfFile(имя_файла = имя, путь к файлу = путь, ури = контентУри, датаДобавлено = дата, fileSize = size.toLong(), Имя_каталога = Имя_каталога) pdfList.add(pdfFile) } } } вернуть список PDFList }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»