Bilder laden und Ort speichern

  • 9 Antworten
  • Letztes Antwortdatum
C

chrissi75

Neues Mitglied
0
Hallo,
ich benötige folgende Funktionalität für eine App... eigentlich sollte das ganz simpel sein, funktioniert auch schon in Ansätzen mit lokalen Dateien, aber eben nicht mit allen Dateien und auch nicht mehr unter KitKat...

Ich möchte gerne, dass der Benutzer ein Bild auswählen kann. Der Ort sollte egal sein.
Da ich das vom Benutzer ausgewählte Bild in einer anderen Activity wieder zum Anzeigen laden will, muss ich mir irgendwie merken, wo das ist. Ich will es nicht zwangsläufig speichern. Auch wäre nur ein Thumbnail günstig.

Wie kann ich das einfach und für alle Bilder (egal ob lokal oder in der Cloud) machen?

Ich wäre für Hilfe sehr dankbar, da ich schon 1000 Wege versucht habe, aber noch keinen wirklich befriedigenden Erfolg hatte.
 
Hallo, Facebook bietet doch eine ähnliche Funktion für Bilder wie du sie brauchst. Versuch dich da mal reinzulesen.
 
Ich weiß nicht ob ich dich richtig verstanden habe aber mir ist da gleich die Idee gekommen, den Pfad, oder aber auch die Url in einer Globalen Varible zu speichern.
Ich bin selber noch anfänger in Android!!!

Global.java erstellen unter deinem Package.
(Rechtsklick auf Package->New Class->Global und mit finisch erstellen.

Jetzt kannst du in die Global.java reingehen und bei
public class Global {
public static string bild_url = "";
}


Jetzt kann du von überall in deinem Projekt auf die Variable zu greifen!!
Global.bild_url = chosen_picture_path;


Ich hoffe ich konnte was helfen :thumbup:
 
Hi kukuk,

vielen Dank für deine Antwort!
Hmm, ja, ist so gemeint, doch das Speichern ist nicht das Problem.

Hier mal ein wenig Code...

Die folgende Methode rufe ich auf, wenn man einen Button klickt, der dann den ermöglicht, dass man ein Bild auswählt:
Code:
public void choosePic(View view) {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        startActivityForResult(Intent.createChooser(intent, "Choose pic"), 1);
    }
Das klappt auch. Mit der folgenden Methode hole ich dann den URI:
Code:
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
        super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    
       
                    uri2save = imageReturnedIntent.getData();
// hier kommt dann noch weiterer Code...
    }
Habe ich den URI, so speichere ich den in den mit Hilfe der SharedPreferences ab. Darin kann ich aber wohl nur Text speichern.
D.h. ich hole mir dann den Pfad zum Bild als Text und speichere ihn da, um das Bild dann in einer anderen Activity wieder anzeigen zu können.

Daraus ergeben sich folgende Probleme:
1.) das klappt nur bei lokalen Bildern (bei Android <= 4.3)
2.) seit KitKat klappt auch dies nicht mehr (vermutlich wegen des neuen Storage Frameworks)

Das muss doch eleganter gehen?!
Ich will kein Bild speichern, einfach das vom Benutzer ausgewählte Bild "merken" und später (auch nach einem Neustart) soll es dann wieder geladen und angezeigt werden.

Danke für jegliche Hilfe!



Ich hole den "Pfad" zum Bild aus dem Intent (also in der Methode

kukuk schrieb:
Ich weiß nicht ob ich dich richtig verstanden habe aber mir ist da gleich die Idee gekommen, den Pfad, oder aber auch die Url in einer Globalen Varible zu speichern.
Ich bin selber noch anfänger in Android!!!

Global.java erstellen unter deinem Package.
(Rechtsklick auf Package->New Class->Global und mit finisch erstellen.

Jetzt kannst du in die Global.java reingehen und bei
public class Global {
public static string bild_url = "";
}


Jetzt kann du von überall in deinem Projekt auf die Variable zu greifen!!
Global.bild_url = chosen_picture_path;


Ich hoffe ich konnte was helfen :thumbup:
 
Der Nutzer kann das Bild auch zwischendurch löschen. Oder es durch ein anderes ersetzen. Dass sind doch viele Fehlermöglichkeiten die du alle abfangen musst.

Da bietet sich doch der Cache auf der SD Karte an um es dort hin zu kopieren. Dann hast du es immer zur Verfügung (unter einen statischen Namen)

cu
 
Hi rihntrha,

ja, kann er. Wäre nicht so schlimm, dann wir ein default-Bild gesetzt.
Aber die Idee mit der SD-Karte hört sich auch gut an. Wie geht das?

LG


rihntrha schrieb:
Der Nutzer kann das Bild auch zwischendurch löschen.
Da bietet sich doch der Cache auf der SD Karte an um es dort hin zu kopieren.

cu
 
chrissi75 schrieb:
Aber die Idee mit der SD-Karte hört sich auch gut an. Wie geht das?

Das gibt es irgendwo in der Android API Beschreibung (Link habe ich gerade nicht parat). Da gibt es die Funktion "gib mit den Pfad um Cache Dateien auf der SD Karte zu speichern".

Dass irgendwo auf der SD zu speichern (wie es leider viele Apps machen) hat den Nachteil das es dem Nutzer die SD vollmüllt und das es bei der Deinstallation der App nicht automatisch gelöscht wird. Ferner wird es dann in der App Info Seite nicht bei der Größenberechnung berücksichtigt.

cu
 
Ok, kennst du eine bessere Methode?
Manche Apps legen ja auch ein eigenes Verzeichnis an und speichern da ihre Dateien. Dort könnte man ja auch die Bilder speichern, richtig?

Weißt du, wie das geht?


rihntrha schrieb:
Das gibt es irgendwo in der Android API Beschreibung (Link habe ich gerade nicht parat). Da gibt es die Funktion "gib mit den Pfad um Cache Dateien auf der SD Karte zu speichern".

Dass irgendwo auf der SD zu speichern (wie es leider viele Apps machen) hat den Nachteil das es dem Nutzer die SD vollmüllt und das es bei der Deinstallation der App nicht automatisch gelöscht wird.

cu
 
Veröffentlichen? Hmm, bin erstmal nur am herumspielen...
Danke, die Hauptseite kenne ich, diese spezielle Seite aber noch nicht.
Danke!
 
Zurück
Oben Unten