2012-04-14 75 views
0

我一直在研究MediaPlayer应用程序,我使用MediaStore.Audio.Media获取SD卡上的所有歌曲及其标题,专辑,艺术家等标签。我有一个自定义适配器,我想检查艺术家字段是否为空,因此我可以为该字段设置“艺术家未知”。适配器和我使用的游标在我看来与这个问题无关,所以我不打算在这里粘贴任何代码,因为这个问题也发生在适配器之外。如何检查MediaStore.Audio.Media.ARTIST字段为空?

这是问题:当mp3歌曲没有艺术家标签时,艺术家字段(MediaStore.Audio.Media.ARTIST字段)的光标返回“”。我不知道是什么样的数据类型(它应该是字符串),因为每当我将它与具有值“”的字符串进行比较时,比较是错误的。即使我将该字段的返回值分配给一个临时String,并且与前面提到的“”比较,我仍然会得到错误。我甚至尝试过null,“未知”,“”,没有任何作用。 我真的在这里遇到了死胡同,任何形式的帮助都将不胜感激。

谢谢你,伊万。

回答

1

我使用的是非常相同的字段(MediaStore.Audio.Media.ARTIST),但我注意到的是不同的。 当您尝试检索歌曲的艺术家信息并且当前没有可用信息时,您得到的是<unknown>字符串。

我想改变这种方式也是一样,我只是去了:

String artist = (((cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)) == null) 
          || cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)).equals("") 
          || cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)).equals("<unknown>")) ? 
       "Artist Unknown" : cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST))); 

的“空,平等相待。(”“)”检查应该是无用的反正。