我想监视对另一个应用程序 SQLite 数据库的更改。由于 Android 不允许我访问另一个应用程序的内部数据,我需要一个根应用程序,这正是我的应用程序。
有没有办法可以监视系统上文件的更改并在我的应用程序中触发事件?
我在 Google 上四处搜索,看到人们推荐使用FileObserver
类,但这不适用于受保护的文件。还有其他建议吗?
--
我一直在寻找这个问题的答案,但我没有找到任何答案。我已经尝试过这两种有前途的技术,但我无法让它们发挥作用。
- 应用程序数据目录中的所有文件都归该应用程序的用户和组所有。
FileObserver
尊重 Linux 权限,因此我似乎无法使用它来监视另一个应用程序数据目录中的数据库/文件。
我想知道如果我能以某种方式将我的应用程序的 Linux 进程提升为以root
. 这也不容易,因为这意味着玩弄 , 我不太了解的setuid
机制setguid
。
- 我尝试从另一个应用程序的数据库文件创建一个符号链接到我的应用程序的数据目录。我在符号链接上添加了所有权限,然后用来
FileObserver
监视它,但这也不起作用。也许我做错了什么,但我最好的猜测是在 Linux 中,符号链接权限是无用的。受尊重的符号链接上的权限是目标文件/目录的权限。
可能有使用 JNI 和inotify.h
文件的方法,但我不确定如何去做。
我不想从我的应用程序中轮询数据库。我想要一个事件触发机制。