从系统应用访问 /data 文件夹



我正在开发一个应用程序,该应用程序需要来自/data文件夹中某些文件的数据(主要是/data/system_ce/0,但也有一些其他文件夹(。

该应用程序应该是一个系统应用程序。我用平台密钥对.apk文件进行了签名,并将其移动到/system/priv-app(也用/system/app尝试过(文件夹中。

但是,当我尝试读取权限rw-------(即 600(的文件时,我收到一个FileNotFoundException,说"Permission denied"。 文件的所有者是"系统"。 为什么我无法读取文件?除了从我的应用程序更改文件权限之外,还可以执行哪些操作?

我目前的安卓版本是Oreo (8.1)。我不关心向后兼容性。

权限为 600 意味着只有文件所有者才能读取/写入文件。应用可能不是文件的所有者。在这种情况下,您可以执行以下操作之一:

1( 让您的应用程序获得 root 权限,例如:

public void onCreate ()
{
// ...
try
{
Runtime.getRuntime ().exec ("su");
} catch (Exception e)
{
// Failed to obtain root privileges...
}

当您的应用执行该代码时,您可以在用于根管理的任何应用中授予根权限(例如,在 Magisk 管理器中(。

2( 将文件权限更改为全局可读/可写。

3( 将文件的所有权更改为应用程序的所有者。

此外,请确保您的应用程序确实作为系统应用程序运行(查看其 Android 设置:如果它显示"卸载"按钮,则它不是作为系统应用程序运行(。

其中之一应该有效。

最新更新