【问题标题】:How to create android apps with root access?如何创建具有 root 访问权限的 Android 应用程序?
【发布时间】:2011-03-25 17:37:11
【问题描述】:

我发现有很多应用程序需要 root 访问权限。

他们是如何创建这些应用的?他们在哪里找到所有资源? 有没有关于root访问的官方文档?还是需要一些hackish方式?

什么类型的访问需要 root 访问权限? 代理是其中之一吗?我没有找到任何关于在任何地方访问代理的文档。

=== 更新 ===

我认为有些人误解了我的问题。我知道手机需要root才能获得root访问权限。但我想知道的是,什么样的服务需要root访问权限? 一些我看到无线系绳,另一种是清除缓存(它甚至需要root访问权限才能清除缓存吗?),还有其他应用程序。有没有我从 root 访问中获得的优势列表?

【问题讨论】:

  • 我想,我的问题是:你为什么要获得 root 访问权限?你想达到什么目标?不root就不行吗?
  • 好吧。我只是想知道。有时我发现没有办法以通用的方式做事,我想知道它是否可以通过 root 访问来完成。 :)

标签: android root


【解决方案1】:

您需要在手机中安装 su(当然)。详情在这里: http://forum.xda-developers.com/showthread.php?t=682828

要使用它,就像运行 su 命令一样简单。这是我用来以编程方式重启手机的示例(复制自此答案:Android 2.2: Reboot device programmatically

try {
    Runtime.getRuntime().exec("su");
    Runtime.getRuntime().exec("reboot");
} catch (IOException e) {
} 

【讨论】:

  • 还有,顺便说一句,要回应:哪些访问需要root访问? - 手机需要先“root”。该方法有点“hackish”,它取决于模型,但通常非常简单。您可以在forum.xda-developers.com中找到每部手机所需的所有详细信息
  • 我可以使用什么样的命令?所有 linux su- required 命令?
  • 嗯,更新使它成为一个完全不同的问题 :) 我不能告诉你需要 root 的任务列表,但可以肯定 r/w 访问 /system(如在 root explorer 或TiBu) 或直接访问 /dev 中的设备或 /etc 中的配置将需要它。我认为最直接的答案是让你绕过android api限制。我只将它用于非常基本的东西(captivate 的 lagfix 控制应用程序,可以在这里找到:forum.xda-developers.com/showthread.php?t=917727
【解决方案2】:

应该适用于大多数版本:

try {
    Runtime.getRuntime().exec("su -c reboot");
} catch (IOException e) {
} 

【讨论】:

    【解决方案3】:

    许多应用程序依赖于以 su 为前缀的 shell 脚本/命令。

    我认为没有办法在 Android API 中请求另一个上下文或提升权限。

    【讨论】:

      【解决方案4】:

      使用此功能并在项目的任何地方使用它

       public static void sudo(String... strings) {
          try {
              Process su = Runtime.getRuntime().exec("su");
              DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
      
              for (String s : strings) {
                  outputStream.writeBytes(s + "\n");
                  outputStream.flush();
              }
      
              outputStream.writeBytes("exit\n");
              outputStream.flush();
              try {
                  su.waitFor();
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
              outputStream.close();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
      

      上述功能的使用,并以root用户使用任何类型的shell命令

        sudo("iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080");
      

      【讨论】:

        【解决方案5】:

        通常,root 应用程序只是使用诸如“su ...”之类的命令,如果没有 root 访问权限,它们将无法使用这些命令。通过这些命令执行,它们可以覆盖所有内容(即删除系统应用程序或增强您的 android 设备)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-21
          • 1970-01-01
          • 2015-12-17
          • 1970-01-01
          • 2016-06-30
          • 1970-01-01
          • 2012-05-15
          相关资源
          最近更新 更多