Event überwachen

  • 7 Antworten
  • Letztes Antwortdatum
T

Trised

Neues Mitglied
1
Hallo Zusammen,

ich habe mir eine eigene kleine Galerie geschrieben, wo ich die Thumbnails abbilde und so gut wie ich bin, diese auch durch klick öffne.

Code:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType( Uri.fromFile(new File(__path_to_file__), "image/*" );
startActivityForResult(intent, 3);
Nun ist es so, dass das Bild in der Standard Ansicht geöffnet wird. Dort besteht auch die Möglichkeit des bearbeiten oder des löschen. :blink: Gerade das letzte ist für mich von Bedeutung.
Würde ich dies mit dem Event onActivityResult in Erfahrung bringen können?

Dachte das ich einfach mit dem Broadcast Receiver einfach android.intent.action.MEDIA_SCANNER_FINISHED abfange und entsprechend prüfe ob noch die Bilder da sind. Doch die Standard Ansicht löst dies nicht aus. :thumbdn:
Generell würde es mich auch interessieren, da ja auch die App im Hintergrund liegen könnte und in der Standard Galerie durch andere Apps oder durch den User sich der Inhalt währenddessen verändert.
Ich möchte ja nicht zyklisch ständig immer die Resourcen durchsuchen lassen.

Hoffe das der ein oder andere eine Idee bezüglich dieses Vorhaben hat. :thumbup:

Beste Grüße
Trised
 
Dein Problem wird mir noch nicht ganz klar. Wenn du ein Bild löschen möchtest, dann tust du das einfach und musst nicht auf irgend ein event warten.

Gesendet von meinem HTC One X mit Tapatalk 2
 
Ich möchte das Bild nicht löschen.
Möchte es nur mitbekommen, wenn es im "Hintergrund" gelöscht wird um entsprechend meine Darstellung daraufhin anzupassen.
 
Es sollte im Hintergrund nichts gelöscht werden. Es sei denn der User löscht ein Bild während er das Gerät am PC gemountet hat. Dann musst du die view eben schließen, wenn du den mount intent bekommst.

Ich habe das in meinen Projekten ignoriert und lediglich die view neu geladen, wenn der sdcard-mounted intent ankam.

Gesendet von meinem HTC One X mit Tapatalk 2
 
Er könnte ja schon meine App aufmachen, sich mit anderen Apps vergnügen und gegebenfalls die Galerie aufräumen und dann sich wieder meiner App widmen.
Dann hätte ich aber immernoch alle zum Start geladenen Bilder in meiner View. Das Problem wäre dann, dass dort auf alte Resourcen verwiesen wird welche es nicht mehr gibt und ich auch neue Bilder nicht mitbekommen habe um entsprechend meine View anzupassen.

Eigentlich würde es mir auch genügen, wenn ich es mitbekomme wenn die MediaStore verändert wurde.
Gibt es dafür ein Event oder Action welche ich auswerten kann?

Sicherlich könnte ich bei jedem Resume die View komplett neuladen lassen. Doch das ist eigentlich nicht in meinem Sinn, wenn es eh keine Änderungen gab.
 
Für den von dir genannten Fall gibt es onResume. Dort könntest du prüfen ob das File noch existiert. (File.exists())

Gesendet von meinem HTC One X mit Tapatalk 2
 
Unicate schrieb:
Für den von dir genannten Fall gibt es onResume. Dort könntest du prüfen ob das File noch existiert. (File.exists())
Dies wäre natürlich eine Möglichkeit. Doch so bekomme ich ja nur mit ob etwas gelöscht werden würde aber nicht ob etwas hinzugekommen ist.

Habe jetzt die Lösung gefunden.
ContentObserver und das Event onChange

Löst aus sobald etwas hinzukommt (Kamera, Apps) und auch wenn etwas gelöscht wird.
Daraufhin kann ich dann ein Scan durchführen lassen.
 
Das wiederum bekommst du mit durch diesen Intent

Zumindest kannst du danach schauen ob sich was geändert hat. Die Liste der vorherigen Files solltest du ja schon haben.
 
Zurück
Oben Unten