java.lang.NullPointerException: decodeResource(context.r…rces, R.drawable.ic_logo) 不能为空
Posted
技术标签:
【中文标题】java.lang.NullPointerException: decodeResource(context.r…rces, R.drawable.ic_logo) 不能为空【英文标题】:java.lang.NullPointerException: decodeResource(context.r…rces, R.drawable.ic_logo) must not be null 【发布时间】:2021-12-23 01:24:01 【问题描述】:我正在尝试从音乐中获取专辑封面 uri(如果为 null/空,则在应用可绘制中显示我自己的)
但我明白了:
Utility.kt
fun getAlbumArtBitmap(context: Context, albumId: Long): Bitmap
try
return when
Build.VERSION.SDK_INT >= Build.VERSION_CODES.P ->
val source = ImageDecoder.createSource(
context.contentResolver,
getAlbumArtUri(albumId)
)
ImageDecoder.decodeBitmap(source)
else -> MediaStore.Images.Media.getBitmap(
context.contentResolver,
getAlbumArtUri(albumId)
)
catch (e: FileNotFoundException)
Timber.e(e)
catch (e: UnsupportedOperationException)
Timber.e(e)
return BitmapFactory.decodeResource(context.resources, R.drawable.ic_logo)
drawable(R.drawable.ic_logo)是一个xml矢量drawable(svg导入),位于drawable文件夹中
Player.kt
val artwork = getAlbumArtBitmap(context, song.albumId)
putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, artwork)
【问题讨论】:
【参考方案1】:显然,R.drawable.ic_logo 是矢量图。
我最终使用了这个:
ContextCompat.getDrawable(context, R.drawable.ic_logo)?.toBitmap()
将可绘制的矢量转换为位图,并且成功了!
【讨论】:
以上是关于java.lang.NullPointerException: decodeResource(context.r…rces, R.drawable.ic_logo) 不能为空的主要内容,如果未能解决你的问题,请参考以下文章
亲測,Eclipse报"An error has occurred,See error log for more details. java.lang.NullPointerExce