2016-02-06 120 views
0

我已经经历了很多stackoverflow的问题,但我找不到答案。有一个图像文件的答案,但不适用于我的情况。从绝对路径获取音频文件的URI URI

所以我有文件的绝对路径使用file.getAbsolutePath()。但我需要将其转换为contentUri,以便下面的查询工作正常。

Cursor tempCursor = context.getContentResolver().query(uri, 
        proj, null, null, null); 

它不工作。我试过Uri.parse(contentUri),但是这不会给我猜的内容。请帮助我,我很久以来就陷入困境。谢谢 !!

+0

“但我需要将其转换为contentUri,以便下面的查询工作正常” - 为什么?查询结果中包含的内容是什么,您无法从文件中获取?请记住'MediaStore'不知道甚至无法访问所有文件。 – CommonsWare

+0

@CommonsWare非常感谢您的回复。我需要从文件路径中获取歌曲ID。这就是为什么我需要执行查询。 – varunkr

+0

“我需要从文件路径中获取歌曲ID” - 为什么?歌曲ID有什么价值? – CommonsWare

回答

1

您不使用get.absolute等。只需查询Medfiastore.Audio等,并带回_id和_DATA。 _id是歌曲ID,_DATA具有完整路径,并且可以使用一段代码,并且可以跟踪

。只是喂它的曲目名称

public String getThisTrackId(Context context, String trackName) { 
    ContentResolver cr = context.getContentResolver(); 
    final String _id = MediaStore.Audio.Media._ID; 
    final String path = MediaStore.Audio.Media.DATA; 
    final String[] columns = { _id }; 
    final String[] trackname = { "%"+ trackName +"%" }; 
    String where = path + " LIKE ?"; 
    String strtrack_id = null; 
    Cursor crs =cr.query(uri, columns, where, trackname, null); 
    if(crs!= null && crs.moveToFirst()){ 
     strtrack_id = crs.getString(crs.getColumnIndexOrThrow(_id)); 
     crs.close(); 
    } 

    return strtrack_id; 
} 
+0

Varunkr,我的任何文章是否帮助你解决你的问题?如果可以的话,你可以接受为答案,甚至可以投票吗? – Theo