我正在开发一个需要/data
文件夹(主要是/data/system_ce/0
文件夹中的某些文件中的数据的应用程序。
该应用程序应该是系统应用程序。我使用平台密钥对.apk
文件进行了签名,并将其移至/system/priv-app
(也与/system/app
进行了尝试)文件夹中。
但是,当我尝试读取权限为rw-------
(即600)的文件时,我得到一个FileNotFoundException
,上面写着"Permission denied"
。
文件的所有者是“系统”。
为什么我无法读取文件?除了在我的应用程序中更改文件权限外,还能做什么?
我当前的Android版本是Oreo (8.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按钮,则它不是以系统应用程序的身份运行。)
其中一个应该起作用。