使用Android官方提供的MediaStore库。以下是一个基本的代码示例,使用MediaStore获取设备中的相册和照片:
// 获取图片库中的所有相册 String[] projection = new String[]{ MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATE_MODIFIED };
String sortOrder = MediaStore.Images.Media.DATE_MODIFIED + " DESC";
Uri queryUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; Cursor cursor = getActivity().getContentResolver().query( queryUri, projection, null, null, sortOrder );
if (cursor != null) { while (cursor.moveToNext()) { // 获取相册信息 int bucketId = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_ID)); String bucketName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME)); long dateModified = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATE_MODIFIED));
// 获取相册中的所有照片
Uri uri = MediaStore.Images.Media.getContentUri("external");
String[] projectionPhotos = {MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATE_TAKEN, MediaStore.Images.ImageColumns.DATA};
String selectionPhotos = MediaStore.Images.Media.BUCKET_ID + " = ?";
String[] selectionArgsPhotos = {""+bucketId};
Cursor cursorPhotos = getContext().getContentResolver().query(uri, projectionPhotos, selectionPhotos, selectionArgsPhotos, MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");
if (cursorPhotos != null) {
while(cursorPhotos.moveToNext()) {
// 获取照片信息
int photoID = cursorPhotos.getInt(cursorPhotos.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID));
String photoPath = cursorPhotos.getString(cursorPhotos.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATA));
long photoDateTaken = cursorPhotos.getLong(cursorPhotos.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATE_TAKEN));
// ...
}
cursorPhotos.close();
}
}
cursor.close();
}