Я могу сохранить фотографию в таблице 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
Запрос ничего не возвращает из Android mediastore.images.media ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1747407585
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.
Подробнее здесь: [url]https://stackoverflow.com/questions/79509381/query-returns-nothing-from-android-mediastore-images-media[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия