如何在Android框架中编写/读取应用特定的文件?[打开失败:修改AOSP时EACCES(权限被拒绝)]

nbysray5  于 2023-05-21  发布在  Android
关注(0)|答案(1)|浏览(170)

我试图修改Android框架代码之一,使其读/写用户应用程序的应用程序特定的文件。
当我检查logcat时,它显示以下错误:

java.io.FileNotFoundException: /data/user/0/com.example.APPS/files/FILES: open failed: EACCES (Permission denied)

根据我的搜索,我发现这个问题可以通过使用一些adb命令来解决,这些命令可以更改访问模式并禁用SELinux:

$ adb root
$ adb shell chmod 777 /data/user/0/com.example.APPS/files
$ adb shell setenforce 0

然而,我认为这只是一个暂时的解决方案,因为如果设备一旦关闭,它就不起作用。
所以,我的问题是,Android框架是否有任何非时态方法来处理特定于应用程序的文件?
详细地说,我修改了'frameworks/base/core/java/com/android/server/am/BatteryStatsService.java',增加了:

FileWriter writer = null;
try {    
    JSONObject oneHist = new JSONObject();
    oneHist.put("a", "b");
    File file = new File(path);
    writer = new FileWriter(file, true);
    writer.write(oneHist.toString() + "\n");
    writer.flush();                
} catch (JSONException | IOException e){
    e.printStackTrace();
} finally {
    try { writer.close(); } catch (Exception e) { }
}
vmjh9lq9

vmjh9lq91#

Android框架是否有任何非时态方法来处理特定于应用程序的文件?
答案基本上是否定的。Android的整个安全设计是保持进程隔离,除了定义良好的接口。让系统服务器全面访问另一个应用程序的文件将违反该原则,因为对任意文件字节的读/写不是一个定义良好的API。
请解释你的实际目标是什么,文件访问只是达到某种目的的一种手段。应该有一些替代方案来实现你的最终目标。更容易接受的替代方案可能涉及向服务管理器接口添加新方法,但在不知道最终目标的情况下,不可能说出最佳方法是什么。

相关问题