2014-04-20 105 views
0

我试图将XML文件从我的应用程序私人目录移动到另一个应用程序私人目录。它向我请求超级用户,我授予他权利但他不移动该文件。超级用户和移动文件

final Runtime runtime = Runtime.getRuntime(); 
      try { 
       runtime.exec("su"); 
       runtime.exec("mv " + Environment.getDataDirectory().toString() + filename + " " + path); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

为什么?文件名是“FlappyBird.xml”的方式,和路径是“/data/data/com.dotgears.flappybird/shared_prefs”

而且,我想这样的:

runtime.exec("mv /data/data/de.aciid.nullgc/files/FlappyBird2.xml /data/data/com.dotgears.flappybird/shared_prefs/"); 

不工作。

回答

1

你执行两个独立的命令:

  • su启动一个root shell(你以后忽略)
  • mv跑你,这被认为是失败的

你什么需要的是单个命令,如

sudo mv src dst 

以root身份工作时要小心。

+1

我认为你的意思是'sudo mv src dst',就像你拥有它,'mv src dst'将被视为'su'命令的参数。 – azurefrog

+0

runtime.exec(“su mv /data/data/de.aciid.nullgc/files/FlappyBird2.xml /data/data/com.dotgears.flappybird/shared_prefs/”);没有工作。我只是删除了单个su请求,并将其全部放在这一行中。不动。 /编辑:啊,好吧。我现在请求了一个cmd的su(不知道我是否必须这样做),并且在下一步做了sudo mv src dest。可悲的是,它不动。 – KrauseDroid

+0

@KrauseDroid:它必须是'sudo'而不是'su',但我想你知道。让你不要错过异常(如果有),检查返回代码(对于成功的操作,必须为0),并读取过程输出(通过'getErrorStream')。它实际上必须工作,除非有错误的论点 – maaartinus