在编写我需要个人使用的应用时遇到问题,我无法找到解决方案。
我需要从其他应用程序中获取二进制文件的副本,一段时间后我需要恢复它。该文件来自/data/data/app.package/files/,因此我不能在没有root的情况下读/写它。
我能够使用文件资源管理器将文件复制到其他位置,但是我无法使用root shell将其复制回来。如果我使用文件浏览器,应用程序会再次读取该文件...如果我使用我的代码,原始应用程序会说数据损坏 我尝试了几种方法:
cp [origin] [destination] - >文件已创建,但无法读取。 cp -p [origin] [destination] - >现在权限似乎有效,但它仍然无法正常工作
cat [origin]> [目的地],并且在我手动完成chown以将用户和组设置为正确的(而不是root) - >仍然没有运气 (取自这里:Copy files to another package folder (root, su))
所有人都使用了这段代码:
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(suProcess.getInputStream()));
for(String command: inputCommands){
Log.d("ROOT","Writing: " + command);
os.writeBytes(command+"\n");
}
os.writeBytes("exit\n");
os.flush();
int suProcessRetval = suProcess.waitFor();
/* This part is usually outside the method,
I copied it here to show how I access the output.
String aLine = null;
while ((aLine = stdInput.readLine() )!= null){
Log.d("ROOT", aLine);
}
*/
os.close();
有办法吗?或者可能有任何想法可以帮助我对此进行调查?
谢谢!