StupidBeauty
Read times:3053Posted at: - no title specified

RootTools文档翻译:用法,Usage

介绍

本文说明的是,RootTools 库都提供了哪些方法,以及,该如何使用它们。下面所说的所有东西,都可能在任何时候发生变化,事实上,它们一定会变化。这个库,经常发生变化,每次都变得更好。当我们引入变更时,我们会尽量减轻妳的痛苦。

欲知RootTools 库中所有方法的详细信息,请参考此文档:

http://roottools.googlecode.com/svn/trunk/Developmental/doc/index.html

在Eclipse中包含这个库

在妳的项目中包含RootTools 库,这样,妳才能使用它。这个过程其实狠简单!

  1. 1. Eclipse中,右键单击妳的项目,切换到“构建路径”("Build Path"),然后切换到“配置构建路径”("configure build path"

  2. 2.现在选择“添加外部Jar”("add External Jar"

  3. 3.找到妳所下载的RootTools .jar 文件,然后选中它。

  4. 4.切换到“排序及导出”("Order and Export"),确保这个库旁边的复选框处于选中状态,然后,将它移动到列表的顶部。

  5. 5.点击“确定”("ok")以使配置生效

这就好了!现在 ,在妳的安卓项目中,就可以使用这个库了。现在 ,妳的安卓项目中已经有了这个库, 妳所需要做的,就是在需要用到它的java 文件中导入(import)它。具体做法 就是, 在java 文件的顶部,应用程序 名的下面,加上 import com.stericson.RootTools.* import com.stericson.RootTools.RootTools

启用调试模式

要开启/关闭调试模式,则,在妳的应用程序代码中加入以下代码:

RootTools.debugMode = true; // 开启

RootTools.debugMode = false; // 关闭

使用日志功能log()

这个方法,允许妳在开启调试模式的情况下输出调试信息。这样,妳就可以在妳的应用程序中加入一个调试选项,默认情况下出于性能考虑而关闭它。然而,当妳需要调试信息时,简单地切换一个开关就可以启用它,并且得到详细的日志信息。

这个方法,会根据RootTools.debugMode 的值来判断,是否要将妳传递给它的消息输出到日志中。妳可以直接使用它,而无需亲自处理那些琐事。

可以按照以下方式来使用日志功能:

RootTools.log("this is a log message"); // 这条日志消息的标记值( TAG )将会是 "RootTools"

RootTools.log("OurTag", "this is a log message");

这个方法,默认会调用log.d,因为,它的用意本来就是调试。

如果妳想改变日志的类型,那么,可以这样:

log(TAG, msg, 3, null);

此处,妳可以传入:对该条日志消息使用的标记值(TAG);消息本身;日志类型;以及,附带传递的异常。

以下是可用的类型:

1 = log.v

2 = log.e

3 = log.d

busybox

Busybox,可能是root 开发者的工具库里唯一最有用的工具了。问题是,并非每个系统镜像(ROM)中都默认安装了busyboxRootTools库中提供了一个用于检测busybox 的方法。用起来狠简单:

if (RootTools.isBusyboxAvailable()) {

// busybox存在, 做点什么吧

} else {

// 做点别的

}

建议 的做法是,如果 busybox 不存在,那么, 妳应当提醒用户 ,并且 向它们提供一种安装手段 ,例如让它们利用市场中的 http://market.android.com/details?id=stericson.busybox 应用来安装。 RootTools 也为此提供了一个便利。 妳有两种选择:

RootTools.offerBusyBox(activity);

Intent intent = RootTools.offerBusyBox(activity, requestCode);

第一种方法,只是简单地启动一个意图,该意图会打开BusyBox 应用的市场页面。第二种方法,做的是同一件事,只不过,它使用的是startActivityForResult(),这样,妳可以得知用户在市场应用中究竟做了什么。当使用第二种方法时,requestCode参数就跟直接调用startActivityForResult()时使用的参数一样,所返回的意图(Intent),也跟直接调用该方法时返回的意图一样。两个方法,其参数中都要求有一个活动(Activity),妳应当传入调用此方法的活动本身。

检测su

su就是用来赋予root 权限的二进制程序。通常,手机上发现了这个文件,就表明该手机已被root。妳可以使用以下方法来检测su 二进制文件是否存在:

if (RootTools.isRootAvailable()) {

// su存在, 做点什么

} else {

// 做点别的

}

注意,这个方法只检测su是否存在。还可以采用以下方法来做一个更完整的检查:

if (RootTools.isAccessGiven()) {

// 妳的应用程序已经被赋予 root权限

}

RootTools.isAccessGiven() 不仅仅检测某个设备是否已被 root 还会为妳的应用程序调用 su ,请求获取权限 并在妳的应用程序被赋予root 权限 时返回真(true)。 当妳需要root权限时,可以首先 使用这个方法来进行检测,以确保 妳确实获得了权限。

检测SD卡上是否有可用的存储空间

如果妳需要向SD 卡上写入东西,那么,最好是先做个检测,看看是否还有可用空间。RootTools也提供了一个简单的方法,用于做这种检测:

if (RootTools.hasEnoughSpaceOnSdCard(updateSize)) {

// 有足够的存储空间,该干嘛干嘛吧

} else {

// 存储空间 不够,使用备用方案?

}

这个方法,要求一个长整型(long)参数,表示的是,妳需要多少个存储块(blocks)的空间,如果存在足够的空间并且SD 卡可写入则返回真(true)。如果SD 卡已被用户挂载,则此方法会返回假(false)。

运行root命令

以root 身份运行命令,狠简单!以下是一个示例:

Command command = new Command(0, "echo this is a command", "echo this is another command");

try {

RootTools . getShell( true ) . add(command);

}catch (IOException | RootDeniedException | TimeoutException ex) {

ex . printStackTrace();

}

妳应该已经发现了,利用这些代码,妳可以运行任意数量的命令。

如果妳想记录妳所运行的命令的输出内容,那么,可以使用以下代码:

Command command = new Command(0, "echo this is a command", "echo this is another command")

{

@Override

public void commandOutput( int id, String line) {

super . commandOutput(id, line);

}

@Override

public void commandTerminated( int id, String reason) {

super . commandTerminated(id, reason);

}

@Override

public void commandCompleted( int id, int exitcode) {

super . commandCompleted(id, exitcode);

}

};

RootTools.getShell(true).add(command);

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4