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

时间:2018-07-05 11:27:50

标签: java android linux

我正在开发一个需要/data文件夹(主要是/data/system_ce/0文件夹中的某些文件中的数据的应用程序。

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

但是,当我尝试读取权限为rw-------(即600)的文件时,我得到一个FileNotFoundException,上面写着"Permission denied"。 文件的所有者是“系统”。 为什么我无法读取文件?除了在我的应用程序中更改文件权限外,还能做什么?

我当前的Android版本是Oreo (8.1)。我不在乎向后兼容性。

1 个答案:

答案 0 :(得分:0)

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

1)让您的应用获得root特权,例如:

public void onCreate ()
{
    // ...
    try
    {
        Runtime.getRuntime ().exec ("su");

    } catch (Exception e)
    {
        // Failed to obtain root privileges...
    }

当您的应用执行该代码时,您将在用于根管理的任何应用中(例如,在Magisk Manager中)授予根特权。

OR

2)将文件权限更改为世界可读/可写。

OR

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

此外,请确保您的应用程序确实以系统应用程序的身份运行(请查看其Android设置:如果显示UNINSTALL按钮,则它不是以系统应用程序的身份运行。)

其中一个应该起作用。