Java 如何在没有文件信息的情况下更新媒体存储?

Java 如何在没有文件信息的情况下更新媒体存储?,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,大家好我正在创建一个音乐播放器应用程序,以获取我正在使用的android MediaStore数据提供商的歌曲列表,如下所示 ContentResolver contentResolver = getBaseContext().getContentResolver(); Uri uri = MediaStore.Audio.Media.getContentUri("external"); String[] proj = null; String selectionMimeType = Media

大家好
我正在创建一个音乐播放器应用程序,以获取我正在使用的android MediaStore数据提供商的歌曲列表,如下所示

ContentResolver contentResolver = getBaseContext().getContentResolver();
Uri uri = MediaStore.Audio.Media.getContentUri("external");
String[] proj = null;
String selectionMimeType = MediaStore.Files.FileColumns.MIME_TYPE+"=?";
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("mp3");

String[] selectoinArgsMp3 = new String[]{mimeType};
Cursor allMediaFiles = contentResolver.query(uri, proj, selectionMimeType,selectoinArgsMp3, null);
但我面临着在添加文件时更新MediaStore的挑战,在目瞪口呆之后,我找到了以下解决方案

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
            Uri.parse("file://" + Environment.getExternalStorageDirectory() ))); 
根据我的理解,这不起作用。

  • 另一种解决方案是使用
    FileObserver
    ,但这不是递归的。
  • 如果我们知道文件名,我们可以使用下面的代码更新MediaStore,但我们无法控制获取文件名,因为用户可以下载歌曲或移动歌曲。

  • 最后一个解决方案是手动扫描,但手动扫描3GB(平均考虑)是一个耗时的过程

因此,任何人都可以分享任何想法或资源
谢谢

MediaScannerConnection.scanFile(file.getAbsolutePath(),"mimetype");