Reputation: 1075
Hi i want to specify a folder on the SD card to retrieve all of images in a subfolder of that folder (ex, /mnt/sdcard/Folder/SubFolder). I've this:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery);
GridView gridview = (GridView) findViewById(R.id.gallery);
registerForContextMenu(gridview);
id = getIntent().getExtras().getString("ID");
// Set up an array of the Thumbnail Image ID column we want
String[] projection = {MediaStore.Images.Thumbnails._ID};
// Create the cursor pointing to the SDCard
cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
projection, // Which columns to return
null, // Return all rows
null,
MediaStore.Images.Thumbnails.IMAGE_ID);
// Get the column index of the Thumbnails Image ID
columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
And in setAdapter of my gridview i have:
gridview.setAdapter(new BaseAdapter() {
public View getView(int position, View convertView, ViewGroup parent) {
ImageView picturesView;
if (convertView == null) {
picturesView = new ImageView(mContext);
// Move cursor to current position
cursor.moveToPosition(position);
// Get the current value for the requested column
int imageID = cursor.getInt(columnIndex);
// Set the content of the image based on the provided URI
picturesView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" + imageID));
picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
picturesView.setPadding(8, 8, 8, 8);
picturesView.setLayoutParams(new GridView.LayoutParams(100, 100));
}
else {
picturesView = (ImageView)convertView;
}
return picturesView;
}
public int getCount() {
return cursor.getCount();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
});
That's works but show me all images contained in sdcard... I've tried to set a URI path, like "content:///mnt/sdcard/folder/subfolder" but it doesen't work...How can I specify, in MediaStore managedQuery, a specific folder to scan??
Thank you all in advance! :)
Upvotes: 0
Views: 2277
Reputation: 13506
Try getting MediaStore.Images.Media.DATA field - it contains the full path to the image file. Then you can either run thru the cursor and select only files you're interested in or build your query so it returns only entries with path "LIKE %your_folder_name%"
Upvotes: 3