我正在尝试将图片保存在Android上的子文件夹中。这是我的一些代码:
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();
((我尝试用getExternalStorageDirectory
代替getExternalStoragePublicDirectory
,并且用Pictures文件夹代替DCIM。)
我添加的任何子文件夹,包括其内容,在通过USB连接设备时都不会显示在Windows资源管理器中。不过,它的确显示在Android文件管理器中。
我已经尝试在新目录的父目录上广播ACTION_MEDIA_MOUNTED
意图。它没有用。
如果我在Windows中添加文件,该文件将显示在Android上。如果我通过文件管理器在Android上添加文件,则该文件会显示在Windows中。如果我以编程方式添加文件,则该文件会显示在Android文件管理器中,但不会显示在Windows资源管理器中。而且,我需要从Windows获得它,并且我不希望最终用户必须手动创建文件夹。
我在做什么错?
我也遇到了同样的问题,对于用户来说,重新启动Android设备或PC并不是一个切实可行的解决方案。 :)
此问题是通过使用MTP协议(我讨厌此协议)引起的。你必须启动对可用文件的重新扫描,您可以使用MediaScannerConnection
类进行此操作:
// Snippet taken from question
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();
// Initiate a media scan and put the new things into the path array to
// make the scanner aware of the location and the files you want to see
MediaScannerConnection.scanFile(this, new String[] {path.toString()}, null, null);
这种方式有时对我不起作用。好吧,这是一个完整的解决方案。
// Snippet taken from question
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();
// Fix
path.setExecutable(true);
path.setReadable(true);
path.setWritable(true);
// Initiate media scan and put the new things into the path array to
// make the scanner aware of the location and the files you want to see
MediaScannerConnection.scanFile(this, new String[] {path.toString()}, null, null);
唯一对我有用的是:
Intent mediaScannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri fileContentUri = Uri.fromFile(path);
mediaScannerIntent.setData(fileContentUri);
this.sendBroadcast(mediaScannerIntent);
如果将文件夹从PC直接通过读卡器从PC添加到SD卡中,则在与手机连接时不会在Windows资源管理器中显示。
解决方案是使用Android文件管理器程序复制或移动相同的文件夹,然后在连接到PC时,它将在SD卡索引中列出。
我已经通过切换电话设置解决了这个问题:
1)创建Dir和/或保存文件后,暂时从(MTP)模式更改为USB(SD卡)模式,等待将sd卡安装到pc,这样将显示Dir和文件。
2)再次返回(MTP)模式,在该模式下仍显示最后一个文件。
3)重新保存文件时,您必须再次更改为USB才能看到它。
只需先在PC上创建目录,然后将其复制到SD卡/电话存储中。
您可以先将内容放入文件夹中,然后再复制,也可以仅复制文件夹中的内容。只要是从pc创建文件夹,任何内容都可以直接复制到内部/外部移动设备。对于压缩的内容,很遗憾,它们无法直接解压缩并复制,您需要先将其解压缩。
祝你好运,祝你有美好的一天! :)