Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用android media scanner时,Windows资源管理器不刷新_Java_Android - Fatal编程技术网

Java 使用android media scanner时,Windows资源管理器不刷新

Java 使用android media scanner时,Windows资源管理器不刷新,java,android,Java,Android,在我的应用程序中,我想重命名和删除外部存储目录中的文件夹或文件。 为此,我使用了此问题中mediascanner的修改版本: 这似乎很好,因为android应用程序“AndroZip”显示了重命名的文件夹。但在windows资源管理器中,文件夹仍使用旧名称,并且将显示一个没有扩展名的新文件,其中包含新文件夹名称。 我曾尝试断开usb电缆、刷新windows资源管理器或使用mediascanner的其他实现,如广播意图。但唯一有效的办法是重启我的android设备 媒体扫描仪: public c

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

这似乎很好,因为android应用程序“AndroZip”显示了重命名的文件夹。但在windows资源管理器中,文件夹仍使用旧名称,并且将显示一个没有扩展名的新文件,其中包含新文件夹名称。 我曾尝试断开usb电缆、刷新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();
}
公共类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文件也没有帮助。