首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓10 MediaStore API更改

安卓10 MediaStore API更改
EN

Stack Overflow用户
提问于 2019-09-05 06:24:44
回答 1查看 3K关注 0票数 1
代码语言:javascript
复制
Uri uri = MediaStore.Audio.Artists.Albums.getContentUri("external", 
artistId);

String[] projection = new String[] {BaseColumns._ID};

Cursor cursor = 
mContext.getApplicationContext().getContentResolver().query
(uri,
projection,
null,
null,
null);

在安卓10之前,BaseColumns._ID返回的是album_id,现在是10,它返回一些随机Id。

当我将投影作为null传递并检索时,下面的所有列名都是我得到的列名。这是在Android 10中。numsongs,艺术家,numsongs_by_artist,专辑,album_art,album_key,artist_id,maxyear,minyear,album_id

在Android 10下面没有_id列。

要想在10分钟内获得album_id,我必须使用低于预期的

代码语言:javascript
复制
String[] projection = new String[] 
{MediaStore.Audio.Artists.Albums.ALBUM_ID};

对于下面相同的Uri,下面是我在Android 10下面获得的可用列。album_art、max放年、_id年、艺人、专辑、artist_key、numsongs_by_artist、_id、numsongs、album_key、艺术家。

这里没有album_id列,_id返回album_id。现在10分钟就没有了。

现在我需要有不同的代码来获得专辑id,一个用于Android 10,一个用于低于Android 10的。

而这些变化在Android 10的行为改变中却没有列出。这对我们来说是非常关键的变化,这样的小变化会破坏我们每天150万人使用的整个应用程序。

怎么会有人这样改变而不让开发人员知道呢?(或者)有什么东西我在文档里找不到吗?(或)如何跟踪这些更改?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-16 13:43:59

在android下面,对于MediaStore.Audio.Artists.Albums.getContentUri("external",artistId) uri,相册id在列BaseColumns._ID中可用,而在android中,这个列是不可用的,但仍然返回一些不属于相册id的随机数。

我们必须使用MediaStore.Audio.Artists.Albums.ALBUM_ID来获取Android中的专辑id,但是这并不适用于低于android的用户,因为这一栏是不可用的。因此,我们必须使用两个不同的版本来引用相册id。

代码语言:javascript
复制
if (Build.VERSION.SDK_INT >= 29) {
    return MediaStore.Audio.Artists.Albums.ALBUM_ID;
}else{
    return BaseColumns._ID;
}    

编辑1 :向谷歌提出了一个类似的问题。https://issuetracker.google.com/issues/140508535。谷歌已经表示,它是固定的,并将在下一个版本中发布。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57799515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档