Wie kann ich eine Benachrichtigung erhalten, wenn eine Datei von der SD-Karte gelöscht wird?

8

Ich möchte Dumpster wie eine App erstellen, dazu möchte ich eine Benachrichtigung erhalten wenn der Benutzer eine Datei löscht, damit ich sie im App-Speicher speichern kann.

Ich habe File Observer benutzt, aber es gibt eine Benachrichtigung nach dem Löschen der Datei und in Marshmallow gibt es auch keine Benachrichtigung zum Löschen. Ich habe diesen Link für Dateibeobachter genannt. Irgendwo, wo ich es gelesen habe, ist es möglich, native Programmiersprache (C) zu verwenden, konnte aber keine Lösung finden. Wie kann ich das machen? Vielen Dank im Voraus.

Ich habe es versucht:

%Vor%     
Divy Soni 23.06.2017, 11:45
quelle

1 Antwort

6

Lasst uns die Dinge zuerst klären.

  1. Dumpster Verwendet das .trash-Verzeichnis, das möglicherweise immer vorhanden ist. Dies sollte beachtet werden, dass Dumpster in vielen Geräten nicht richtig ausgeführt wird, wie es durch Google-Bewertungen gesehen werden kann.
  2. Dumpster Anwendungen (i ahnen es aus dem Code für pädagogische Zwecke nur) seine eigene Systemdatei Handler , die ein service verwendet für onClick Ereignis und wenn seine Datei zu überprüfen onClick Es speichert die File sowie seine path in einem separaten Ordner (normalerweise ausgeblendet) und speichert es auch in einem database , das lokal ist. Wenn es gelöscht wird, wissen Sie, wo sich die Datei befindet, und wenn nicht, löschen Sie diese Datei aus dem hidden folder . Nun, das ist den Aufwand nicht wert, weil Sie Ihren Dienst fast fast die ganze Zeit ausführen müssen, der CPU-Ressourcen verbraucht. Es läuft auch auf gerooteten Geräten, aber warum root-Gerät nur für diesen Zweck.
  3. Da die Sicherheit in Geräten zunimmt, wird es weniger möglich, diese Aufgaben auszuführen. Als letzte von 1-09-2017 haben alle diese Dateien den Papierkorb Negative Rezensionen zu den neuesten Android-Versionen. Daher beweise ich meinen Standpunkt.

    FileObserver verwendet das Konzept für auf die Datei alle Änderungen überprüft oder auch Verzeichnisse, aber man kann es nicht beeinflussen bedeutet, dass Sie nicht Löschung verhindern kann, wird alles benachrichtigen, nachdem der Benutzer gelöscht hat.

    inotify.h ist die für NDK Zwecke verwendet für die Erstellung von Anwendung mit den Ereignissen auf Ordner und Dateien zu überprüfen, aber wenn der Ordner die Unter Unterordner erwähnt wird, nicht in diese abgedeckt werden oder Sie über Änderungen für die Datei informieren. Außerdem ist das in inotify verwendete Konzept dasselbe wie FileObserver . Sie können die Benachrichtigung erst nach dem Löschen der Datei erhalten. Der in inotify verwendete Code ist ungefähr so.

  
  1. Erstellen Sie die inotify-Instanz nach inotify_init ().
  2.   
  3. Fügen Sie alle zu überwachenden Verzeichnisse mit inotify () - Funktion in die inotify_add_watch -Liste hinzu.
  4.   
  5. Um die aufgetretenen Ereignisse zu ermitteln, führen Sie read () in der inotify-Instanz aus. Dieser Lesevorgang wird blockiert, bis das Änderungsereignis eintritt. Es   Es wird empfohlen, selektives Lesen dieser Inotify-Instanz durchzuführen   Verwenden Sie select () call.
  6.   
  7. Lesen gibt die Liste der Ereignisse zurück, die in den überwachten Verzeichnissen aufgetreten sind. Basierend auf dem Rückgabewert von read () werden wir genau wissen, welche Art von   Änderungen sind aufgetreten.
  8.   
  9. Falls Sie die Überwachung von Verzeichnissen / Dateien entfernen, rufen Sie inotify_rm_watch ().
  10. auf   

Die beiden in inotify vorhandenen Methoden sind wie folgt:

IN_DELETE - Datei / Verzeichnis aus dem überwachten Verzeichnis gelöscht

IN_DELETE_SELF - Beobachtete Datei / Verzeichnis wurde selbst gelöscht

beide sind fast gleich wie in FileObserver

  1. Diese Lösung kann nicht vollständig helfen, kann aber dennoch beim Erstellen einer Anwendung vom Typ Dumpster helfen. Man kann sagen, dass Sie Ihre eigenen File Manager erstellen müssen, wo Sie Ihre eigenen Individuell gestaltete erstellen kann FileV2 (nur ein cooler Name Dateiversion 2.0) Klasse, die% erweitert co_de% und Sie können die Löschmethode (und alle anderen außer Kraft setzen ) wie es Dir gefällt. Sie können ein File custom sagen, wollen Sie pop up die Datei mit Ihrem eigenen delete die Datei auf ja und backing up das Popup auf Nein. (Stellen Sie sicher, dass der Benutzer diesen Dateimanager benutzt, um ihn zu löschen, andernfalls wird er nicht funktionieren, da das Überschreiben des Systems Datei delete () auch andere Anwendungen durcheinander bringt).

    %Vor%

Aber stellen Sie sicher, dass Ihre Dateien gespeichert werden, wenn der Benutzer Ihre dismissing dafür verwendet. Sie können File Manager für die Aufgabe festlegen, sodass Ihre intent-filters in FileManager kommt.

Zuletzt bin ich mir aber nicht sicher, vielleicht kann ACTION_VIEW auch benutzt werden. (Allerdings nicht sicher)

Quellen :

Inotify.h Hilfe-Website

registerContentObserver Hilfe

Art der ähnlichen Frage

FileObserver-Hilfe

Linux Hilfe Deleted Log für Dateien

Ich hoffe, es hilft und ich hoffe, dass Sie jetzt anfangen können, was Sie wollen.

    
Sahil 01.09.2017 15:26
quelle