2013-09-25 43 views
0

我正在開發一個android應用程序,其中我試圖訪問android內置Gallery應用程序。我正在使用下面的代碼。Android Gallery App Force關閉問題Micromax funbook P300標籤

 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

沒有得到哪裏去IAM錯!請幫忙!謝謝!

回答

0

它拋出以下異常:

android.database.StaleDataException:試圖訪問光標 它已被關閉後。

考慮將imagecursor.close()轉換爲您的活動的onDestroy()方法。

其他相關的提示在this post