我有一个Android 4.3设备,并经常通过USB连接到我的PC,以便我可以查看我的一个应用程序创建的文件。奇怪的是,似乎并非android文件系统上的所有文件都可见。经过多次搜索,我遇到this page(如果我错了,请纠正我)建议如果我用我感兴趣的路径调用MediaScannerConnection.scanFile,那么它会使这些目录中的所有文件都可见。我已经实现了如下代码:
void make_files_in_directory_visible_on_pc(String directory)
{
Log.i("xx","make_files_in_directory_visible_on_pc: dir=["+directory+"]");
MediaScannerConnection.scanFile(
getApplicationContext(),
new String[]{ directory }, // array of paths
null, // mime types
new OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri)
{
Log.i("xx","file " + path + " was scanned successfully: " + uri);
}
});
}
我的应用将其文件保存在Environment.getExternalStorageDirectory()。getAbsolutePath()中,在我的设备上,它是“/ storage / emulated / 0”。
当我从我的应用程序执行此操作时,我在日志中看到以下内容:
file /storage/emulated/0 was scanned successfully: content://media/external/file/2552
代码运行后,我的电脑上可见的文件列表没有变化,但仍有许多文件丢失。 有什么想法吗?
编辑:仅供参考,我在该目录或我设备上的任何其他地方都没有名为“2552”的文件。
编辑:如果我执行以下操作:
MediaScannerConnection.scanFile(this, new String[] {Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+name_of_individual_file}, null, null);
然后该单个文件确实可见,但我想为目录中的所有文件实现此目的。
答案 0 :(得分:0)
我已经解决了......
void make_files_in_directory_visible_on_pc(String path)
{
File f = new File(path);
File file[] = f.listFiles();
for (int i=0; i < file.length; i++)
{
MediaScannerConnection.scanFile(this, new String[] {file[i].getAbsolutePath()}, null, null);
}
}