【发布时间】:2014-12-08 12:14:14
【问题描述】:
第一次发帖,如有错误,我深表歉意。 :) 我在这个问题上搜索了很长时间,但找不到任何东西。
我正在尝试编辑另一个 android 应用程序的 shared_preferences 文件。 (我有开发人员的许可。)该文件是这样的 xml 结构:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="password">XYZ</string>
<string name="username">XYZ</string>
<boolean name="2.6.0.5" value="false" />
<boolean name="disclaimer.isAccepted" value="true" />
<string name="safeForMode2">7</string>
</map>
我使用根终端加载文件,编辑内容并将其写回文件。
加载代码:
String[] commands = {"cd <directory>", "cat pref-file.xml"};
String output = RunAsRoot(commands);
settings = output;
编写代码:
String[] commands = {"cd <directory>", "echo '" + settings + "' > pref-file.xml"};
RunAsRoot(commands);
RunAsRoot 获取 SU-Privilieges 并执行字符串数组中的命令。这部分工作正常。
如果我使用例如编辑文件ES 文件资源管理器,一切正常。设置已应用并且可以正常工作。如果我尝试使用上述代码对其进行编辑,则应用无法识别修改后的文件,并将被其标准 xml 覆盖,从而导致应用设置完全重置。
我已经检查了文件权限并将它们设置为与源文件相同,但应用程序不会接受它。在文本编辑器中,两个版本的文件看起来完全一样。
您以前是否在某个地方遇到过这个问题?看起来,这两个文件彼此相同。我找不到应用程序不接受它的原因。如果您需要更多 coden-ps,我很乐意发布它们。
再次,如果这个问题之前已经回答过,我们深表歉意。在这种情况下,我很乐意获得链接。 ;)
提前致谢!
编辑:修复了 xml-example 中的一个错误。不包括标题。
【问题讨论】:
-
这里只是猜测,但它与编码有什么关系吗?编辑后的 XML 文件很可能需要编码为 UTF-8 才能被识别。
-
@JASONGPETERSON:ES 文件资源管理器显示两个版本都是 UTF-8 编码的。 ://
-
使用
chown恢复文件的所有权信息 -
在编辑之前从文件中读取文件所有者和权限,并在写入过程之后再次设置。正如我所说 - 一切看起来都一样。
标签: android shell adb root preferences