Я хочу отслеживать изменения в другой базе данных SQLite. Поскольку Android не позволяет мне получать доступ к внутренним данным другого приложения, мне нужно приложение root, которое является именно тем, что у меня есть.
Есть ли способ отслеживать изменения в файле в системе и запускать событие в моем приложении?
Я искал Google и видел, как люди рекомендуют использовать класс FileObserver
, но это не будет работать для защищенных файлов. Любые другие предложения?
-
Я искал ответ для этого, но я его не нашел. Я пробовал эти два sei-перспективных методов, но я не мог заставить их работать.
- Все файлы в каталоге данных приложения принадлежат этому пользователю и группе приложений.
FileObserver
уважает разрешения Linux, поэтому я не могу использовать его для мониторинга базы данных/файла в другом каталоге данных приложения.
Мне интересно, возможно ли это, если бы я мог каким-то образом поднять мой Linux-процесс приложения для работы под root
. Это нелегко, так как это означало бы сотрудничество с механизмом setuid
, setguid
, о котором я не очень понимаю.
- Я попытался создать символическую ссылку из другого файла базы данных приложения в каталог данных приложения. Я добавил все разрешения на символическую ссылку, а затем использовал
FileObserver
для ее мониторинга, но это тоже не сработало. Возможно, я сделал что-то не так, но, насколько мне известно, в Linux, разрешения на символическую ссылку бесполезны. Разрешения на символическую ссылку, которые соблюдаются, относятся к целевому файлу/каталогу.
Может существовать способ использования файлов JNI и inotify.h
, но я не уверен, как это сделать.
Я не хочу опросить базу данных из своего приложения. Я хотел бы иметь механизм запуска событий.