Запрос ничего не возвращает из Android mediastore.images.mediaAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Запрос ничего не возвращает из Android mediastore.images.media

Сообщение Anonymous »

Я могу сохранить фотографию в таблице mediastore.images.media, и я вижу ее с помощью приложения Files, но когда я пытаюсь получить фотографию, запрос возвращается пустым. Моя версия API 34. < /p>


< /code>
SavePhoto ниже работает, но GetPoto возвращает пустое < /p>
suspend fun savePhoto(imageBitmap: ImageBitmap, photoName: String, reportName: String) {
withContext(Dispatchers.IO) {
val resolver = appState.contentResolver
val imageCollection = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
val timeInMillis = System.currentTimeMillis()
val cv = ContentValues().apply {
put(MediaStore.Images.Media.DISPLAY_NAME, photoName)
put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
put(MediaStore.Images.Media.DATE_TAKEN, timeInMillis)
put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_PICTURES + "/" + reportName)
put(MediaStore.Images.Media.IS_PENDING, 1)
}
val imageMediaStoreUri = resolver.insert(imageCollection, cv)
imageMediaStoreUri?.let { uri ->
try {
resolver.openOutputStream(uri)?.let { out ->
imageBitmap.asAndroidBitmap().compress(Bitmap.CompressFormat.JPEG, 100, out)
}
cv.clear()
cv.put(MediaStore.Images.Media.IS_PENDING, 0)
resolver.update(uri, cv, null, null)
} catch (e: Exception) {
resolver.delete(uri, null, null)
}
}
}
}
< /code>
fun getPhoto(reportName: String, photoName: String): ImageBitmap? {
Log.d("getPhoto", "ReportName: " + reportName + ", Photo: " + photoName)
var imageBitmap: ImageBitmap? = null
if (photoName.isNotEmpty() && reportName.isNotEmpty()) {
var contentUri: Uri? = null
val projection = arrayOf(MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME)
val selection ="${MediaStore.Images.Media.RELATIVE_PATH} = ? AND ${MediaStore.Images.Media.DISPLAY_NAME} = ?"
val selectionArgs = arrayOf(Environment.DIRECTORY_PICTURES + "/" + reportName, photoName)
val sortOrder = "${MediaStore.Images.Media.DISPLAY_NAME} ASC"

appState.contentResolver.query(
MediaStore.Images.Media.getContentUri(VOLUME_EXTERNAL_PRIMARY),
projection,
selection,
selectionArgs,
sortOrder
)?.use { cursor ->
cursor.moveToFirst()
try {
val idColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID)
val id = cursor.getLong(idColumn)
contentUri = ContentUris.withAppendedId(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id
)
} catch (e: Exception) {
Log.d("getPhoto", "Exception: " + e.message.toString())
}
}
if (contentUri != null) {
val options = BitmapFactory.Options()
options.inSampleSize = 2
appState.contentResolver.openInputStream(contentUri).use { stream ->
val photoAsBitmap = BitmapFactory.decodeStream(stream, null, options)
imageBitmap = photoAsBitmap?.asImageBitmap()
}
Log.d("getPhoto", "ContentUri: " + contentUri.toString())
}
}
return imageBitmap
}
< /code>
Why is the query returning empty? It does so in the emulator and on my phone when connected to android studio. No errors in Logcat. It's like the mediastore.images table is empty.

Подробнее здесь: https://stackoverflow.com/questions/795 ... ages-media
Ответить

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

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

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

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

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