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%Lasst uns die Dinge zuerst klären.
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. 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.
- Erstellen Sie die inotify-Instanz nach
inotify_init
().- Fügen Sie alle zu überwachenden Verzeichnisse mit
inotify
() - Funktion in dieinotify_add_watch
-Liste hinzu.- 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.- 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.- Falls Sie die Überwachung von Verzeichnissen / Dateien entfernen, rufen Sie
aufinotify_rm_watch
().
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
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).
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 :
Linux Hilfe Deleted Log für Dateien
Ich hoffe, es hilft und ich hoffe, dass Sie jetzt anfangen können, was Sie wollen.
Tags und Links android android-6.0-marshmallow fileobserver