Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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
如何在不重新启动的情况下自动将保存的文件添加到目录中-Android应用程序_Android_Restart_File Manager_Application Restart - Fatal编程技术网

如何在不重新启动的情况下自动将保存的文件添加到目录中-Android应用程序

如何在不重新启动的情况下自动将保存的文件添加到目录中-Android应用程序,android,restart,file-manager,application-restart,Android,Restart,File Manager,Application Restart,我创建了一个Android应用程序,并使用以下方法保存文件: File created=新文件(dir,time.format(“%Y%m%d%H%m%S”)+“+后缀) 但是,即使设备已连接到我的计算机,保存的文件也仅在重新启动设备后显示在指定目录中。如何在不重新启动的情况下强制显示文件?假设dir在某个外部存储器上,并且“仅显示”表示“仅在使用USB电缆将设备连接到开发机器时显示” 请注意,如果开发机器的操作系统(如Windows)缓存MTP结果,您可能还需要在开发机器上执行某种刷新操作。使

我创建了一个Android应用程序,并使用以下方法保存文件:

File created=新文件(dir,time.format(“%Y%m%d%H%m%S”)+“+后缀)


但是,即使设备已连接到我的计算机,保存的文件也仅在重新启动设备后显示在指定目录中。如何在不重新启动的情况下强制显示文件?

假设
dir
在某个外部存储器上,并且“仅显示”表示“仅在使用USB电缆将设备连接到开发机器时显示”


请注意,如果开发机器的操作系统(如Windows)缓存MTP结果,您可能还需要在开发机器上执行某种刷新操作。

使用媒体扫描仪。请注意mime类型,您可能需要根据正在创建的文件更改该类型

MediaScannerConnection.scanFile(this.getApplicationContext(), new String[] { filename }, new String[] { "image/jpeg" }, new OnScanCompletedListener()
{
    @Override
    public void onScanCompleted(final String path, final Uri uri)
    {
        // Eureka, your file has been scanned!
    }
});
以下是广播新文件的更多方法:

更新:

void alternativeScan(final String filename)
{
    final File file = new File(filename);
    final Uri fileUri = Uri.fromFile(file);

    // New way

    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    {
        this.getApplicationContext().sendBroadcast(new Intent("android.hardware.action.NEW_PICTURE", fileUri));
    }

    // Keep compatibility

    this.getApplicationContext().sendBroadcast(new Intent("com.android.camera.NEW_PICTURE", fileUri));

    // Usual way

    final Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    intent.setData(fileUri);
    this.getApplicationContext().sendBroadcast(intent);
}
如果仍然无法工作,请使用下一个功能检查媒体存储状态

public static int getMediaStorageState()
{
    final String state = Environment.getExternalStorageState();

    if (Environment.MEDIA_MOUNTED.equals(state))
    {
        return 0; // All Ok, supported Read & Write
    }
    else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
    {
        return 1; // Media storage has Read Only state
    }
    else
    {
        return 2; // Something's wrong. No Read/Write access
    }
}

刚刚尝试过这个,它不会自动出现在我的目录中,直到重新启动still=\。我在答案中添加了一个新的函数,用于替代扫描模式,基本上你有所有可能的方法在Android中广播新文件。还有一种方法是手动(最好说是编程方式)通过SQL将记录插入到所需的媒体表中,但我认为这有点过分了。另外,请确保您的SD存储已正确安装,使用答案中的最后一个功能检查此项。