제목 대로 특정 풀더를 갤러리 뷰로 불러왔습니다.

갤러리 뷰에서 이미지를 누르면 이미지뷰로 밑에 나오게 했는데요.


문제는 폴더에 이미지를 하나더 넣고 어플을 실행하면 새로 복사한 이미지가 갤러리뷰에 안보입니다.


제가 하고 싶은 질문은 특정 폴더에 새로운 이미지를 복사한 후 어플을 실행하면 갤러리뷰에 새로 복사한 이미지가

보이게 하고 싶은데 이게 잘 안됩니다.


String[] proj = { MediaStore.Images.Media._ID };


cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 

        proj, "bucket_display_name='test'", null, null);


이렇게 했는데 안되고 있습니다.



sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

위와같이 sdcard를 다시 마운트도 시켜봤는데, 처음 실행할때는 목록이 갱신이 안되다가

한번더 실행하면 그때 갱신이 됩니다.


무슨 방법이 없을까요


아래 소스입니다.


package com.Viewer;


import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Observable;


import android.app.Activity;

import android.content.ContentUris;

import android.content.Context;

import android.content.Intent;

import android.content.res.TypedArray;

import android.database.Cursor;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Matrix;

import android.graphics.PointF;

import android.graphics.drawable.Drawable;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.provider.MediaStore;

import android.provider.MediaStore.Images;

import android.util.FloatMath;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.view.ViewGroup;

import android.view.View.OnTouchListener;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.BaseAdapter;

import android.widget.Gallery;

import android.widget.ImageView;


public class Viewer extends Activity {

    /** Called when the activity is first created. */

private Cursor cursor;

private int columnIndex;

private Gallery gallery;


    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);


       sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

        

        String[] proj = { MediaStore.Images.Media._ID };


        

        cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 

        proj, "bucket_display_name='test'", null, null); 


        startManagingCursor(cursor);

        

        columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);


        gallery = (Gallery) findViewById(R.id.gallery1);


        gallery.setAdapter(new ImageAdapter(this));


        gallery.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView parent, View v, int position, long id) {


        String[] proj = { MediaStore.Images.Media.DATA };

       

        Cursor dataCursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 

                    proj, "bucket_display_name='test'", null, null);


        int columnIndex = dataCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

       

        dataCursor.moveToPosition(position);


        String filename = dataCursor.getString(columnIndex);


        Bitmap bitmap = BitmapFactory.decodeFile(filename);


        ImageView imageView = (ImageView) findViewById(R.id.image1);


                imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);

                

                imageView.setImageBitmap(bitmap);

       

        dataCursor.close();



    }


    public class ImageAdapter extends BaseAdapter {

        private Context context;


        private int itemBackground;


    

        public ImageAdapter(Context c) {

       

            context = c;


            TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);


            itemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0);


            a.recycle();

            

        }


        public int getCount() {

            return cursor.getCount();

        }


        public Object getItem(int position) {

            return position;

        }

     

        public long getItemId(int position) {

            return position;

        }


        public View getView(int position, View convertView, ViewGroup parent) {


            ImageView imageView = new ImageView(context);

            

            if (convertView == null) {

            imageView = new ImageView(context);

           

            cursor.moveToPosition(position);

                

                int id = cursor.getInt(columnIndex);


                imageView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + id));

           

            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);


                imageView.setLayoutParams(new Gallery.LayoutParams(100, 80));


                imageView.setBackgroundResource(itemBackground);


            } else {

            imageView = (ImageView) convertView;

            }

      

            return imageView;

        }

    } 

    

}