Tengo una pregunta acerca de la carga de una imagen de un sitio web. El código que uso es:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();
Bitmap bit=null;
try {
    bit = BitmapFactory.decodeStream((InputStream)new URL("http://www.mac-wallpapers.com/bulkupload/wallpapers/Apple%20Wallpapers/apple-black-logo-wallpaper.jpg").getContent());
} catch (Exception e) {}
Bitmap sc = Bitmap.createScaledBitmap(bit,width,height,true);
canvas.drawBitmap(sc,0,0,null);

Pero siempre devuelve una excepción de puntero nulo y el programa se bloquea a cabo.
La dirección es válida, y parece que funciona para todos los demás.
Estoy usando 2.3.1.

  • ¿Qué accidente mensaje de qué se obtiene? ¿Cuál es el seguimiento de la pila? ¿Sabe usted que la línea hace que se bloquee?
  • El createScalesBitmap lanza un NullPointerException, porque poco es nulo.
  • Se necesita el permiso de internet… Añadido <uses-permission android:name="android.permission.INTERNET" /> A androidmanifest.xml
InformationsquelleAutor Tyeomans | 2012-01-24

1 Comentario

  1. 164
    public static Bitmap getBitmapFromURL(String src) {
        try {
            URL url = new URL(src);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            return myBitmap;
        } catch (IOException e) {
            //Log exception
            return null;
        }
    }
    • No :/ que se estrelló así.
    • en manifiestas que tienen los usuarios de permiso de internet?
    • cómo cargar uno de https ?
    • reloj hacia fuera para bloquear el hilo principal. Este debe ser utilizado en AsyncTask de la Clase derivada.
    • El código está bien. Pero No será la excepción de la «Red en el hilo principal». Trate de usar este dentro de «Async Tarea».
    • Cómo detectar si la elevación de la IOException es causado debido a la falta de acceso a Internet?
    • Gracias esto funcionó para mí..
    • más 1 para Android 6.0 amable
    • ¿Por qué necesito una dirección url http conexión cuando yo sólo podía hacer «InputStream in = url.openStream();» que Es mas mejor que hacerlo a tu manera o de la mina fina? sólo pregunto
    • Se estrelló porque se estaba utilizando la conexión de red en el hilo principal. @Tyeomans
    • Se estrelló – -> NetworkOnMainThreadException
    • no Accidente de trabajo de la aplicación
    • Me da una excepción java.net.MalformedURLException

Dejar respuesta

Please enter your comment!
Please enter your name here