Android系统服务无法访问用户数据

发布于 2024-10-30 06:17:12 字数 449 浏览 0 评论 0原文

我正在 platform/frameworks/base 下编写一个 Android 系统服务,它由 SystemServer 启动,并像 Activity Manager 和 Content Manager 一样作为系统服务运行。该服务可以成功访问和修改用户system创建的文件,例如/data/data/com.android.providers.settings/databases/settings.db

但是,该服务无法访问用户应用程序拥有的数据文件。例如,/data/data/com.android.providers.contacts/databases/contacts2.db由用户app_7拥有,当尝试更改该文件时,它抛出 FileNotFoundException。我想知道为什么系统服务不能修改用户数据,或者可以这样做吗?

非常感谢。

I'm writing an Android system service under platform/frameworks/base, it is launched by SystemServer and runs as a system service like Activity Manager and Content Manager. The service can access and modify files created by user system successfully, for example, /data/data/com.android.providers.settings/databases/settings.db.

However the service is not able to access data file owned by user applications. For example, /data/data/com.android.providers.contacts/databases/contacts2.db is owned by the user app_7, when trying to change the file, it throws a FileNotFoundException. I'm wondering why a system service cannot modify user data, or is it possible to do so?

Many thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深居我梦 2024-11-06 06:17:12

据推测,系统服务作为非超级用户帐户运行。从安全角度来看,这通常是一件好事。

如果您想访问联系人,您可以尝试像任何其他 SDK 应用程序一样通过 ContactsContract 内容提供程序来执行此操作。

Presumably, the system service runs as a non-superuser account. This is generally a good thing from a security standpoint.

If you want to access contacts, you can try to do so like any other SDK application, via the ContactsContract content provider.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文