Android 将mp3添加到ContentResolver

Android 将mp3添加到ContentResolver,android,Android,我知道,从应用程序下载mp3后,您需要将其添加到ContentResolver才能在音乐播放器上看到。我使用以下代码执行此操作: private void addFileToContentProvider() { ContentValues values = new ContentValues(7); values.put(Media.DISPLAY_NAME, "display_name"); values.put(Media.ARTI

我知道,从应用程序下载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\u 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(); 
}
如果不起作用,请尝试以下方法:

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后,只需调用这个以文件名作为输入的方法


并确保将活动的名称替换为活动的名称。

什么是:
values.put(MediaStore.Audio.Media.is\u MUSIC,false)。有什么想法吗?事实上,我认为这可能要简单得多:sendBroadcast(新的Intent(Intent.ACTION\u MEDIA\u SCANNER\u SCAN\u FILE,Uri.parse(“FILE://”+path+filename));此外,IS_音乐只是过滤媒体的标志。还有其他标志,如IS_RINGTONE、IS_ALARM等,以便您可以查询您感兴趣的媒体。