2016-06-12 2 views
0

Когда я открываю свою галерею, чтобы выбрать свою фотографию в шоу. Я получил следующие ошибки. И возвращает null. это мой слайд-шоу, который простирается ListActivity:не может загрузить изображение из галереи

public static Bitmap getThumbnail(Uri uri, ContentResolver cr, 
     BitmapFactory.Options options) 
    { 
     int id = Integer.parseInt(uri.getLastPathSegment()); 

     Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(cr, id, 
     MediaStore.Images.Thumbnails.MICRO_KIND, options);   

     return bitmap; 
    } 

и здесь в другом SlideshowEditor расширяет ListActivity:

private class LoadThumbnailTask extends AsyncTask<Object,Object,Bitmap> 
     { 
    ImageView imageView; // displays the thumbnail 

    // load thumbnail: ImageView, MediaType and Uri as args 
    @Override 
    protected Bitmap doInBackground(Object... params) 
    { 
    imageView = (ImageView) params[0]; 

    return Slideshow.getThumbnail((Uri) params[1], 
     getContentResolver(), new BitmapFactory.Options()); 
    } // end method doInBackground 

    // set thumbnail on ListView 
    @Override 
    protected void onPostExecute(Bitmap result) 
    { 
    super.onPostExecute(result); 
    imageView.setImageBitmap(result); 
    } // end method onPostExecute 
    } 

и

protected Bitmap doInBackground(Object... params) 
    { 
    imageView = (ImageView) params[0]; 

    return Slideshow.getThumbnail((Uri) params[1], 
     getContentResolver(), new BitmapFactory.Options()); 
    } 

мой LogCat:

Произошла ошибка при выполнении doInBackground() в android.os.AsyncTask $ 3.done (AsyncTask.java:300) в java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:355) в java.util .concurrent.FutureTask.setException (FutureTask.java:222) на java.util.concurrent.FutureTask.run (FutureTask.java:242) на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587) at java.lang.Thread.run (Thread.java:841) Вызывается: java.lang.NumberFormatException: Invalid int: "image: 54305 " по адресу java.lang.Integer.invalidInt (Integer.java:137) at java.lang.Integer.pa rse (Integer.java:374) at java.lang.Integer.parseInt (Integer.java:365) at java.lang.Integer.parseInt (Integer.java:331) at com.harshadjadav.slideshow.Slideshow. getThumbnail (Slideshow.java:328) в com.harshadjadav.slideshow.SlideshowEditor $ LoadThumbnailTask.doInBackground (SlideshowEditor.java:225) в com.harshadjadav.slideshow.SlideshowEditor $ LoadThumbnailTask.doInBackground (SlideshowEditor.java:215) в android.os.AsyncTask $ 2.call (AsyncTask.java:288) на java.util.concurrent.FutureTask.run (FutureTask.java:237) на

java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor .java: 1112)

+1

Возможный дубликат [Как загрузить изображение в виде изображения из галереи?] (Http://stackoverflow.com/questions/13023788/how-to-load-an-image-in-image-view-from-gallery) – Ironman

ответ

0

В вашем методе getThumbnail(), то Uri.getLastPathSegment() вернет String, так что вы получаете эту ошибку, вы пытаетесь разобрать String объект int

Вы можете обновить свой метод как

public static Bitmap getThumbnail(ContentResolver cr, String path) throws Exception { Cursor ca = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.MediaColumns._ID }, MediaStore.MediaColumns.DATA + "=?", new String[] {path}, null); if (ca != null && ca.moveToFirst()) { int id = ca.getInt(ca.getColumnIndex(MediaStore.MediaColumns._ID)); ca.close(); return MediaStore.Images.Thumbnails.getThumbnail(cr, id, MediaStore.Images.Thumbnails.MICRO_KIND, null); } ca.close(); return null; } 

И можно назвать как

getThumbnail(getContentResolver, uri.tostring) 
+0

так как это исправить? – king

+0

Посмотреть эту тему http://stackoverflow.com/questions/5548645/get-thumbnail-uri-path-of-the-image-stored-in-sd-card-android –

+0

Я не могу понять: - (((((( – king

Смежные вопросы