+-

我知道从您的应用程序下载mp3后,您需要将其添加到ContentResolver以在音乐播放器上查看它.我正在使用以下代码:
private void addFileToContentProvider() {
ContentValues values = new ContentValues(7);
values.put(Media.DISPLAY_NAME, "display_name");
values.put(Media.ARTIST, "artist");
values.put(Media.ALBUM, "album");
values.put(Media.TITLE, "Title");
values.put(Media.MIME_TYPE, "audio/mp3");
values.put(Media.IS_MUSIC, true);
values.put(Media.DATA, pathToFile);
context.getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
}
我的问题是我愿意避免手动设置DISPLAY_NAME,ARTIST,ALBUM,TITLE.
有没有办法告诉Android从文件中执行此操作?我已经只使用了values.put(Media.DATA,pathToFile);但它并没有将它添加到播放器中.
有没有办法强制扫描sd的音乐线程?
最佳答案
首先尝试添加:
values.put(MediaStore.Audio.Media.IS_MUSIC, true);
然后尝试这个:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename)));
如果这不起作用,试试这个:
public MediaScannerConnection mScanner = null;
public void reScan(String filename){
final String name = filename;
mScanner = new MediaScannerConnection(THE_NAME_OF_YOUR_ACTIVITY.this, new MediaScannerConnection.MediaScannerConnectionClient() {
public void onMediaScannerConnected() {
mScanner.scanFile(name, null);
}
public void onScanCompleted(String path, Uri uri) {
if (path.equals(name)) {
mScanner.disconnect();
}
}
});
mScanner.connect();
}
添加mp3后,只需调用此方法,该方法将文件名作为输入.
并确保将THE_NAME_OF_YOUR_ACTIVITY替换为您的活动名称.
点击查看更多相关文章
转载注明原文:android – 将MP3添加到ContentResolver - 乐贴网