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

Java 从系统应用程序访问/data文件夹,java,android,linux,Java,Android,Linux,我正在开发一个应用程序,该应用程序需要/data文件夹中某些文件的数据(/data/system\ce/0主要是,但也需要一些其他文件夹) 该应用程序应该是一个系统应用程序。我用平台键签署了.apk文件,并将其移动到/system/priv-app(也用/system/app进行了尝试)文件夹中 然而,当我尝试读取具有权限rw-----(即600)的文件时,我得到一个FileNotFoundException,说“权限被拒绝”。 文件的所有者是“系统”。 为什么我无法读取文件?除了从我的应用程序

我正在开发一个应用程序,该应用程序需要
/data
文件夹中某些文件的数据(
/data/system\ce/0
主要是,但也需要一些其他文件夹)

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

然而,当我尝试读取具有权限
rw-----
(即600)的文件时,我得到一个
FileNotFoundException
,说
“权限被拒绝”
。 文件的所有者是“系统”。 为什么我无法读取文件?除了从我的应用程序更改文件权限之外,还能做什么


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

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

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

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

    } catch (Exception e)
    {
        // Failed to obtain root privileges...
    }
当您的应用程序执行该代码时,您可以在用于根管理的任何应用程序(例如,在Magisk Manager中)中授予根权限

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

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

此外,确保你的应用程序确实以系统应用程序的形式运行(查看其Android设置:如果显示卸载按钮,则表明它不是以系统应用程序的形式运行)


其中一种方法应该有效。

谢谢,但是如果不引入新问题,我无法找到使用这些方法的方法。我得另找办法。