图像和文件夹未出现在 USB 文件夹访问中
Images and folder not appear on USB folder access
我正在尝试制作照片并将其存储在设备上。
对于路径,我使用的是:
File mediaStorageDir = new File(Environment.getExternalStorageDirectory() + File.separator + "DCIM", "nameFolder");
以及我存储的每张图片的路径,路径是这样的:
/storage/emulated/0/DCIM/nameFolder/IMG_20150513_125555.jpg
好的,看来效果不错
但是,当我尝试通过 USB 查看照片时,新文件夹不存在
但是,如果我通过 DDMS 加入,我可以在这个路径中找到文件夹和图像:
mnt/shell/emulated0/DCIM/nameFolder
问题是什么?
您没有告诉设备您创建了一个新文件,因此您需要做的是使用媒体扫描器,以便它可以更新您设备上的文件列表。尝试创建一个新的 class,如下所示:
public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient
{
private MediaScannerConnection mMediaScanner;
private File mFile;
public SingleMediaScanner(Context context, File file)
{
mFile= file;
mMediaScanner = new MediaScannerConnection(context, this);
mMediaScanner.connect();
}
@Override
public void onMediaScannerConnected()
{
mMediaScanner.scanFile(mFile.getAbsolutePath(), null);
}
@Override
public void onScanCompleted(String path, Uri uri)
{
mMediaScanner.disconnect();
}
}
然后在创建文件后执行此操作:
new SingleMediaScanner(mContext, image);
这应该让设备知道有一个新图像并且它现在应该显示在 USB 连接中。
除了w9jds的回答之外,您还可以发送广播让系统知道您创建了新的媒体文件。
对于特定文件:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAdded)));
或扫描整个外部存储:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
另见:
Scan Android SD card for new files
How can I refresh MediaStore on Android?
我正在尝试制作照片并将其存储在设备上。
对于路径,我使用的是:
File mediaStorageDir = new File(Environment.getExternalStorageDirectory() + File.separator + "DCIM", "nameFolder");
以及我存储的每张图片的路径,路径是这样的:
/storage/emulated/0/DCIM/nameFolder/IMG_20150513_125555.jpg
好的,看来效果不错
但是,当我尝试通过 USB 查看照片时,新文件夹不存在
但是,如果我通过 DDMS 加入,我可以在这个路径中找到文件夹和图像:
mnt/shell/emulated0/DCIM/nameFolder
问题是什么?
您没有告诉设备您创建了一个新文件,因此您需要做的是使用媒体扫描器,以便它可以更新您设备上的文件列表。尝试创建一个新的 class,如下所示:
public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient
{
private MediaScannerConnection mMediaScanner;
private File mFile;
public SingleMediaScanner(Context context, File file)
{
mFile= file;
mMediaScanner = new MediaScannerConnection(context, this);
mMediaScanner.connect();
}
@Override
public void onMediaScannerConnected()
{
mMediaScanner.scanFile(mFile.getAbsolutePath(), null);
}
@Override
public void onScanCompleted(String path, Uri uri)
{
mMediaScanner.disconnect();
}
}
然后在创建文件后执行此操作:
new SingleMediaScanner(mContext, image);
这应该让设备知道有一个新图像并且它现在应该显示在 USB 连接中。
除了w9jds的回答之外,您还可以发送广播让系统知道您创建了新的媒体文件。
对于特定文件:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAdded)));
或扫描整个外部存储:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
另见:
Scan Android SD card for new files
How can I refresh MediaStore on Android?