如何在不重新启动的情况下自动将保存的文件添加到目录中-Android应用程序
我创建了一个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结果,您可能还需要在开发机器上执行某种刷新操作。使
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存储已正确安装,使用答案中的最后一个功能检查此项。