Android Image Download

This article is also available in: enEnglisch

Android - Download Image from HTTP PHP Server
Auf dieser Seite zeigen wir, wie unter Android mit dem HTTP-Client ein Image von einer PHP-Datei heruntergeladen wird. Ganz unten in der App befindet sich ein Button, der den Task für den Download startet. Das Foto wird dabei im Hintergrund heruntergeladen und nach der Fertigstellung des Downloads in die ImageView geladen. Die App zeigt anschließend in der TextView an, ob der Download erfolgreich war.

Android Version API Version
4.0.3 15

PHP-Server

Der PHP-Script stellt die Daten für die App bereit. Das Foto wird direkt von der PHP-Datei geladen und nicht von einem Pfad mit der Bilddatei. Das hat den Vorteil, dass nicht jedes Bild eine eigene Datei hat. Mittels GET-Parameter kann die PHP-Datei auch ein bestimmtes Image anzeigen. Außerdem kann der Script so modifiziert werden, dass das Bild erst nach einer Autorisierung angezeigt wird. Der hier verwendete PHP-Code hat drei Bilder, von denen er zufällig eines ausgibt. Dieses Beispiel ist auch auf unseren Testserver verfügbar und mit der App kompatibel.

Image Download – Source Code

MainActivity: Dieser Abschnitt wird in die MainActivity kopiert.

public class MainActivity extends AppCompatActivity {

    TextView txt;
    boolean download_ok;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt = (TextView)findViewById(R.id.textView);
        Button button= (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new DownloadImageFromInternet((ImageView) findViewById(R.id.imageView))
                        .execute("http://testserver.aeq-web.com/android_load_image/index.php");
            }
        });
    }
    private class DownloadImageFromInternet extends AsyncTask {
        ImageView imageView;

        public DownloadImageFromInternet(ImageView imageView) {
            this.imageView = imageView;
            txt.setTextColor(Color.GRAY);
            txt.setText("Try to download image....");
        }

        protected Bitmap doInBackground(String... urls) {
            String imageURL = urls[0];
            Bitmap d_image = null;
            try {
                InputStream in = new java.net.URL(imageURL).openStream();
                d_image = BitmapFactory.decodeStream(in);
                download_ok = true;
            } catch (Exception e) {
                download_ok = false;
                e.printStackTrace();
            }
            return d_image;
        }

        protected void onPostExecute(Bitmap result) {
            txt_update();
            imageView.setImageBitmap(result);
        }

        void txt_update (){
            if(download_ok == true) {
                txt.setTextColor(Color.GREEN);
                txt.setText("Image was successfully downloaded");
            }else {
                txt.setTextColor(Color.RED);
                txt.setText("Image could not be downloaded");
            }
        }
    }

    }
Manifest: Diese Zeile wird in die Manifest kopiert, um den Zugriff auf das Internet zu erlauben.
<uses-permission android:name="android.permission.INTERNET" />