Speichern und Laden eines Bildes von URL

  • Antworten:7
  • Bentwortet
Imagine Box
  • Forum-Beiträge: 346

03.02.2015, 18:03:04 via Website

Hallo allerseits,

ich habe jetzt schon eine ganze Zeit gegrübelt: Ich möchte gerne ein Bild von einer URL herunterladen, speichern und anschließend als Hintergrund für ein Layout verwenden.
Nur will es einfach nicht funktionieren. Den untenstehenden Code habe ich durch einige Tutorials/Snippets. Ich habe schon gefühlt das halbe Internet nach einer funktionierenden Lösung durchsucht :)

Der Download an sich funktioniert- ich habe das Bild im Datei-Explorer gefunden.

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    downloadFile("http://www.beispiel.de/beispiel.jpg");

}

    public void downloadFile(String uRl) {
        File direct = new File(Environment.getExternalStorageDirectory()
                + "/AnhsirkDasarp");

        if (!direct.exists()) {
            direct.mkdirs();
        }

        DownloadManager mgr = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE);

        Uri downloadUri = Uri.parse(uRl);
        DownloadManager.Request request = new DownloadManager.Request(
                downloadUri);

        request.setAllowedNetworkTypes(
                DownloadManager.Request.NETWORK_WIFI
                        | DownloadManager.Request.NETWORK_MOBILE)
                .setAllowedOverRoaming(true).setTitle("Demo")
                .setDescription("Something useful. No, really.")
                .setDestinationInExternalPublicDir("/AnhsirkDasarpFiles", "fileName.jpg");

        mgr.enqueue(request);
        Log.d("Download", "Download complete");
        RelativeLayout rLayout=(RelativeLayout)findViewById(R.id.relativeLayout);

        Drawable d = new BitmapDrawable(getResources(),Environment.getExternalStorageDirectory()
                + "/AnhsirkDasarp/fileName.jpg");         

        rLayout.setBackgroundDrawable(d);

Wäre nett, wenn mit jemand sagen könnte, was hier dran falsch ist ;-)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.02.2015, 18:12:13 via Website

Hallo Henny,
hast du irgendwelche Fehler ausgaben in LogCat?
Welche Permissions in der Manifest hast du gesetzt?
Wenn du den Code debuggst, welchen wert hat dann die Drawable d ? [=null oder !=null?]
Wenn die Drawable null hat, dann kann deine App die Datei nicht lesen. Duch einen Falschen Pfad etc..

— geändert am 03.02.2015, 18:15:24

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Imagine Box
  • Forum-Beiträge: 346

03.02.2015, 18:20:40 via Website

Hallo Pascal,

Permissions habe ich in weiser Voraussicht großzügig angesetzt :)

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

LogCat sagt: "Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/AnhsirkDasarp/fileName.jpg: open failed: ENOENT (No such file or directory)"

Den DownloadManager habe ich genommen, weil ich dachte, dass es damit leichter sei :) Downloaden von Bildern habe ich noch nie gemacht, weswegen ich hier etwas auf Tutorials angewiesen bin.

Ich habe noch das hier gefunden- hat aber nicht so funktioniert. Ich war nicht sicher, was ich für [aReasonableSize] einsetzen sollte.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.02.2015, 18:28:51 via Website

Passt schon so wenn du den File auf dem FileSystem siehst passt das ja. Frage ist nur: Siehst du auch das richtige Bild wenn du die Datei öffnest oder kannst du diese nicht öffnen weil Datei beschädigt?

Sonst ist das ja klar dass es am Downloader list.

Wo liegt den die Datei im internen Dateisystem unter /sdcard etc..
oder auf der physichen [Sdcard] meist /storage/extSdCard?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Imagine Box
  • Forum-Beiträge: 346

03.02.2015, 18:33:12 via Website

Ich habe auf dem PC nachgesehen- Da sehe ich es im Gerätespeicher unter dem Pfad: Phone/AnhsirkDasarpFiles/fileName.jpg.

— geändert am 03.02.2015, 18:33:29

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.02.2015, 18:41:13 via Website

Nochmal, kannst du es öffnen?

Wenn ja dann liegt es daran, dass dein Pfad hier falsch ist: + "/AnhsirkDasarp/fileName.jpg"); //mal selber prüfen!

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Imagine Box
  • Forum-Beiträge: 346

03.02.2015, 18:44:31 via Website

Och nö... So ein dummer Fehler... Ich habe das "Files" vergessen :) Vielen, vielen Dank! Du hast mir wirklich den Tag gerettet! (whew)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.02.2015, 18:47:02 via Website

Kein Problem :)

Wenn es funktioniert setze diesen Thread bitte noch auf beantwortet.

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten