我想监视另一个应用程序SQLite数据库的更改.由于Android不允许我访问其他应用程序的内部数据,因此我需要一个根应用程序,这正是我的.
有没有办法可以监视系统上文件的更改并在我的应用程序中触发事件?
我已经用Google搜索并看到人们推荐使用FileObserver类,但这对受保护的文件不起作用.还有其他建议吗?
-
我一直在寻找答案,但我没有找到任何答案.我已经尝试了这两种有希望的技术,但我无法让它们发挥作用.
FileObserver尊重Linux权限,因此我似乎无法使用它来监视另一个应用程序的数据目录中的数据库/文件.我想知道如果我能以某种方式提升我的应用程序的Linux进程来运行,这是否可行root.这也不容易,因为它意味着与玩弄setuid,setguid机制,我没有事多的想法.
FileObserver监视它,但这也不起作用.也许我做错了但我最好的猜测在Linux中,符号链接权限是没用的.遵循的符号链接的权限是目标文件/目录的权限.可能有使用JNI和inotify.h文件的方式,但我不知道如何解决这个问题.
我不想从我的应用程序中轮询数据库.我想要一个事件触发机制.
您无法从Java访问它.
一种方法是民意调查:ls -l /data/data/com.target.app/databases/data.db定期运行并获得时间戳.
或者也许使用watch或tail命令.
可能是后台服务可以运行此并发出本地广播.
另一种方法是使用您的应用程序发送SQLite3二进制文件,以root身份启动进程,并为其提供命令.我认为很多应用程序,如钛等,这样做.
更新: 这是一个SQLite3项目:http://code.google.com/p/sqlite3-android/
| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |