studio implement hilos example curso create asynctask java android android-asynctask image-gallery executionexception

java - implement - hilos asynctask android



Android da nullpointer en la recuperación de imágenes (1)

Parece que no entiende el método Cursor.getNotificationUri() .
Supongo que estás tratando de obtener los problemas de los bitmaps devueltos.
Si eso es cierto, intente esto:

if (imgs.size() < 3) { String uriStr = imageCursor.getString(0); Uri uri = null; if (uriStr == null) continue; try { uri = Uri.parse(uriStr); } catch (Exception e) { // log exception } if (uri == null) continue; Bitmap bm = null; try { bm = MediaStore.Images.Media.getBitmap(activity .getContentResolver(), uri); } catch (IOException e) { // log exception } if (bm == null) continue; imgs.add(bm); if (imgs.size() == 3) break; }

Estoy creando una aplicación que selecciona 3 imágenes de la galería con una AsyncTask. El contenido de mi AsyncTask> es:

public class ShoppingGallery extends AsyncTask<Void, Void, List<Bitmap>> { private Activity activity; private static final String LOG_TAG = ShoppingGallery.class.getSimpleName(); private Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI; private String[] projection = {MediaStore.Images.Thumbnails.DATA}; private Cursor imageCursor; public ShoppingGallery(Activity activity){ this.activity = activity; imageCursor = activity.getContentResolver().query(uri, projection, null, null, null); } @Override protected List<Bitmap> doInBackground(Void... params) { List<Bitmap> imgs = new ArrayList<>(); while(imageCursor.moveToNext()){ try { if(imgs.size() < 3) imgs.add(MediaStore.Images.Media.getBitmap(activity.getContentResolver(), imageCursor.getNotificationUri())); } catch (IOException e) { Log.e(LOG_TAG, "problem with the image loading: " + e); } } return imgs; }

Lo cual me parece bien, pero cuando ejecuto mi programa, falla y muestra el siguiente mensaje de error: 08-13 11: 14: 11.662 22360-22360 / com.example.jonas.shoppinglist E / ShoppingContacts: ejecución de la imagen fallida:

java.util.concurrent.ExecutionException: java.lang.NullPointerException: intento de invocar el método virtual ''java.lang.String android.net.Uri.getScheme ()'' en una referencia de objeto nulo

Entonces, problema detectado. La línea donde se queja mi programa es:

imgs.add(MediaStore.Images.Media.getBitmap(activity.getContentResolver(), imageCursor.getNotificationUri()));

¿Cuál es la fuente y la solución?