我知道从应用程序下载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_NAMEARTISTALBUMTITLE
有没有办法让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后,只需调用此方法,该方法以文件名作为输入。
并确保将活动的名称替换为活动的名称。

10-07 19:41
查看更多