我正在尝试构建一项功能,将最新保存的图像从设备加载到应用中。
目前我使用此路径DCIM/Camera/
但它只存储相机拍摄的图像。是否有存储所有图像的文件夹? (截图,从网络或相机胶卷保存的图像)
答案 0 :(得分:3)
不是在文件夹中搜索图像,而是让系统为您处理。
Android会自行索引大多数媒体数据(图片,音乐等),并提供Content Providers来查询这些数据库。
出于您的目的,您可以使用MediaStore.Images.Media
-provider。
public List<String> getImagePaths(Context context) {
// The list of columns we're interested in:
String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_ADDED};
final Cursor cursor = context.getContentResolver().
query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, // Specify the provider
columns, // The columns we're interested in
null, // A WHERE-filter query
null, // The arguments for the filter-query
MediaStore.Images.Media.DATE_ADDED + " DESC" // Order the results, newest first
);
List<String> result = new ArrayList<String>(cursor.getCount());
if (cursor.moveToFirst()) {
final int image_path_col = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
do {
result.add(cursor.getString(image_path_col));
} while (cursor.moveToNext());
}
cursor.close();
return result;
}
该方法将返回当前由MediaStore索引的所有图像的图像路径列表,其中包含最新的图像路径。您需要android.permission.READ_EXTERNAL_STORAGE
- 权限才能生效!