我的应用程序将一些mp3文件下载到SD卡。我想和设备上安装的其他音乐播放器一起播放。但其他音乐播放器不会自动找到我下载的文件。如何强制MediaScanner运行,以便我的媒体文件可以从音乐应用程序中播放?
我使用此代码下载文件
public void run() {
loaded = 0;
try{
java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(url).openStream());
java.io.FileOutputStream fos = new java.io.FileOutputStream(FileName);
java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
byte[] data = new byte[1024];
int x=0;
while((x=in.read(data,0,1024))>=0 && !stop){
loaded += x;
bout.write(data,0,x);
}
fos.flush();
bout.flush();
fos.close();
bout.close();
in.close();
}catch(Exception e){
}
}
答案 0 :(得分:0)
确保文件所在的文件夹中没有名为“.nomedia”的文件。该文件告诉MediaScanner不要检查那里。
(注意:在nomedia前面有一个“。”,这意味着它可能被隐藏了)
答案 1 :(得分:0)
您可以使用广播强制扫描媒体文件:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
答案 2 :(得分:0)
这是一个简单的“基于单一文件的解决方案”:
每当您添加或删除文件时,请让MediaStore内容提供商使用
了解它sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAddedOrDeleted)));
主要优势:使用MediaStore支持的任何mime类型
注意:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
太贵了,扫描一切。我的建议:如果可以,请使用“按文件”方法。