使用Android媒体扫描程序时,Windows资源管理器不会刷新

时间:2013-10-12 15:01:07

标签: java android

在我的应用程序中,我想重命名和删除外部存储目录中的文件夹或文件。 为此我从这个问题中使用了mediascanner的修改版本: Android How to use MediaScannerConnection scanFile

这似乎工作正常,因为例如Android应用程序“AndroZip”显示重命名的文件夹。但是在Windows资源管理器中,该文件夹仍然具有旧名称,并且新文件夹名称将显示没有扩展名的新文件。 我试图断开usb-cable,刷新Windows资源管理器或使用mediascanner的其他实现,如广播意图。但唯一有效的是重新启动我的Android设备。

媒体扫描仪:

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();
}

}

重命名方法

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);
}

0 个答案:

没有答案