针对Micromax funbook P300标签的Android Gallery App Force关闭问题

时间:2013-09-25 10:02:45

标签: java android gallery image-gallery android-gallery

我正在开发一个Android应用程序,在我试图访问Android内置的Gallery应用程序。我正在使用以下代码。

        public void initialize() 
        {
           images.clear();
           final String[] columns = { MediaStore.Images.Thumbnails._ID };
           final String orderBy = MediaStore.Images.Media._ID;
           Cursor imagecursor = managedQuery(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
                null, null, orderBy);

        if(imagecursor != null)
        {
            int image_column_index = imagecursor
                    .getColumnIndex(MediaStore.Images.Media._ID);
            int count = imagecursor.getCount();
            for (int i = 0; i < count; i++) 
            {
                imagecursor.moveToPosition(i);
                int id = imagecursor.getInt(image_column_index);
                ImageItem imageItem = new ImageItem();
                imageItem.id = id;
                lastId = id;
                imageItem.img = MediaStore.Images.Thumbnails.getThumbnail(
                        getApplicationContext().getContentResolver(), id,
                        MediaStore.Images.Thumbnails.MICRO_KIND, null);
                images.add(imageItem);
            }
            imagecursor.close();
        }
        notifyDataSetChanged();
    }

    public View getView(int position, View convertView, ViewGroup parent) 
    {
        ViewHolder holder;
        if (convertView == null)
        {
            holder = new ViewHolder();
            convertView = mInflater.inflate(R.layout.galleryitem, null);
            holder.imageview = (ImageView) convertView
                    .findViewById(R.id.thumbImage);
            convertView.setTag(holder);
        }
        else 
        {
            holder = (ViewHolder) convertView.getTag();
        }
        ImageItem item = images.get(position);
        holder.imageview.setId(position);
        holder.imageview.setOnClickListener(new OnClickListener()
        {

            public void onClick(View v)
            {
                // TODO Auto-generated method stub
                int id = v.getId();
                ImageItem item = images.get(id);
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                final String[] columns = { MediaStore.Images.Media.DATA };
                Cursor imagecursor = managedQuery(
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
                        MediaStore.Images.Media._ID + " = " + item.id, null, MediaStore.Images.Media._ID);

                if (imagecursor != null && imagecursor.getCount() > 0)
                {
                    Log.e("image cursor","image cursor");
                    imagecursor.moveToPosition(0);
                    String path = imagecursor.getString(imagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
                    File file = new File(path);

                    Log.e("image cursor","image cursor"+imagecursor);

                    imagecursor.close();
                    intent.setDataAndType(
                            Uri.fromFile(file),
                            "image/*");
                    startActivityForResult(intent, VIEW_IMAGE);
                }
            }
        });
        holder.imageview.setImageBitmap(item.img);
        return convertView;
    }

除了micromax funbook p300标签外,该代码适用于所有设备。和错误日志看起来像这样

http://textuploader.com/?p=6&id=AkS9T

没有得到我错的地方!请帮忙!谢谢!

1 个答案:

答案 0 :(得分:0)

抛出以下异常:

  

android.database.StaleDataException:尝试访问游标   关闭后。

考虑将imagecursor.close()移动到您的活动的onDestroy()方法中。

this post中的其他相关提示。