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设置:如果显示卸载按钮,则表明它不是以系统应用程序的形式运行)
其中一种方法应该有效。谢谢,但是如果不引入新问题,我无法找到使用这些方法的方法。我得另找办法。