【问题标题】:How to delete a system file from an Android App?如何从 Android 应用程序中删除系统文件?
【发布时间】:2012-06-16 19:43:16
【问题描述】:

我正在使用Root Tools,但我并没有走得太远...... 我想有权从 /system/app 和其他需要 root 的目录中删除文件。我很想通过 Java 以编程方式完成它,但如果我可以通过 shell 命令完成它,那没关系。也。我的手机已经root了。到目前为止,这是我尝试过的。

RootTools.remount("/system", "rw");
                 try {
                    RootTools.sendShell("rm /system/app/Videos.apk", -1);
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (RootToolsException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (TimeoutException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

我也试过了:

 public static void sendShell(List<String> cmds) throws Exception {
        Process process = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(process.getOutputStream());

        for (String tmpCmd : cmds) {
                os.writeBytes(tmpCmd+"\n");
        }

        os.writeBytes("exit\n");
        os.flush();
        os.close();

        process.waitFor();
    }

我不知道从这里做什么......

【问题讨论】:

  • 您的代码似乎合法。您的设备上是否安装了超级用户应用程序?执行“su”命令后,它应该会显示一个对话框。
  • SuperUser 应用程序已安装并弹出。我在将系统挂载为 rw 时遇到问题...我认为它是 ROM,即使它已植根于股票...
  • 这是一件很重要的事情。你应该把它写在问题中,以了解你在哪个阶段遇到了问题。
  • 在撰写本文时不知道。

标签: android shell system


【解决方案1】:

根据我们的对话,您似乎需要一个不同的 rom,因为在您的设备上重新挂载分区时出现问题。

我敢打赌,刷一个新的 rom 会缓解这个问题,并允许 RootTools 正确地将 /system 重新挂载为 rw 并允许您删除您的文件。

【讨论】:

  • 我试着刷了一个新的 ROM,它成功了。由于某种原因,股票 ICS 不起作用,所以我降级为股票 GB。一切正常。谢谢!
  • 系统重新安装正常,我可以从其他资源管理器应用程序中删除文件,但是当我运行 new File("/system/app/file1").delete() 它返回 false,并且当我运行 RootTools.sendShell("rm /system/app/file1") 文件仍然存在......关于为什么的任何想法?
  • 似乎无法格式化,但这是代码。希望这可以帮助。 RootTools.remount("/system", "rw"); this.sendShell("rm /system/app/file1"); Log.e("Proc - 卸载", new File("/system/app/file1").delete() + ""); for (String file : this.fileList) { new File(file).delete();
  • 首先,.delete 返回 false,因为您的应用程序没有删除该文件的权限。你需要root来做你想做的事。其次,您需要记录返回到 sendshell 的结果。输出是什么?可能是系统安装为 RW,可能是 rm 不存在或不在您的 PATH 中,也可能是 rm 存在但已损坏。 rm 无法正常工作的原因可能有很多,但您需要查看错误是什么。
  • 06-26 11:14:06.751: E/RootTools - SendShell(3661): rm 对 /system/app/file1 失败,没有这样的文件或目录 06-26 11:14:06.751: E/RootTools - SendShell(3661): 255 06-26 11:14:06.751: E/Proc - 卸载(3661): false 06-26 11:14:06.751: E/Proc - 卸载(3661): 系统/应用/File1 未删除 我确认该文件在那里并且它是...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 2023-02-01
  • 2021-12-31
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多