Java 使用android media scanner时,Windows资源管理器不刷新
在我的应用程序中,我想重命名和删除外部存储目录中的文件夹或文件。 为此,我使用了此问题中mediascanner的修改版本: 这似乎很好,因为android应用程序“AndroZip”显示了重命名的文件夹。但在windows资源管理器中,文件夹仍使用旧名称,并且将显示一个没有扩展名的新文件,其中包含新文件夹名称。 我曾尝试断开usb电缆、刷新windows资源管理器或使用mediascanner的其他实现,如广播意图。但唯一有效的办法是重启我的android设备 媒体扫描仪:Java 使用android media scanner时,Windows资源管理器不刷新,java,android,Java,Android,在我的应用程序中,我想重命名和删除外部存储目录中的文件夹或文件。 为此,我使用了此问题中mediascanner的修改版本: 这似乎很好,因为android应用程序“AndroZip”显示了重命名的文件夹。但在windows资源管理器中,文件夹仍使用旧名称,并且将显示一个没有扩展名的新文件,其中包含新文件夹名称。 我曾尝试断开usb电缆、刷新windows资源管理器或使用mediascanner的其他实现,如广播意图。但唯一有效的办法是重启我的android设备 媒体扫描仪: public c
public class SingleMediaScanner implements MediaScannerConnectionClient {
private MediaScannerConnection mediaScannerConnection;
private String path;
SingleMediaScanner(Context context, String path) {
this.path = path;
mediaScannerConnection = new MediaScannerConnection(context, this);
mediaScannerConnection.connect();
}
@Override
public void onMediaScannerConnected()
{
File folder = new File(path);
if (folder.isDirectory())
{
String[] filesInFolder = folder.list();
for (int i = 0; i < filesInFolder.length; i++)
{
mediaScannerConnection.scanFile(path + "/" + filesInFolder[i], null);
}
mediaScannerConnection.scanFile(path, null);
}
else
{
mediaScannerConnection.scanFile(path, null);
}
}
@Override
public void onScanCompleted(String path, Uri uri) {
mediaScannerConnection.disconnect();
}
公共类SingleMediaScanner实现MediaScannerConnectionClient{
专用MediaScannerConnection MediaScannerConnection;
私有字符串路径;
SingleMediaScanner(上下文、字符串路径){
this.path=path;
mediaScannerConnection=新的mediaScannerConnection(上下文,this);
mediaScannerConnection.connect();
}
@凌驾
MediaScannerconnected()上的公共无效
{
文件夹=新文件(路径);
if(folder.isDirectory())
{
字符串[]fileinfolder=folder.list();
for(int i=0;i
}
重命名方法
public void renameFormular(String oldName, String newName)
{
File oldFolderName = new File(FORMULARS + "/" + oldName);
File newFolderName = new File(FORMULARS + "/" + newName);
oldFolderName.renameTo(newFolderName);
String[] values = newFolderName.list();
for(int i = 0; i < values.length; i++)
{
String oldFormularFileName = FORMULARS + "/" + newFolderName + "/" + values[i];
String newFormularFileName = oldFormularFileName.replace(oldName, newName);
File oldFormularFile = new File(oldFormularFileName);
File renamedFormularFile = new File(newFormularFileName);
oldFormularFile.renameTo(renamedFormularFile);
}
new FolderMediaScanner(context, FORMULARS);
}
public void renameFormular(字符串oldName,字符串newName)
{
文件oldFolderName=新文件(公式集+“/”+oldName);
File newFolderName=新文件(公式集+“/”+newName);
重命名为(newFolderName);
String[]value=newFolderName.list();
对于(int i=0;i
我在Ubuntu上也有同样的问题。MediaScannerConnection似乎无法很好地使用USB连接。在KitKat之前,ACTION_MEDIA_MOUNTED做得很好,但由于它在4.4中不再受支持,我被卡住了。关于此问题,Kitkat中的操作\u媒体\u扫描仪\u扫描\u文件也没有帮助。