Android 常用工具类之RuntimeUtil
- public class RuntimeUtil {
- /** 通过查询su文件的方式判断手机是否root */
- public static boolean hasRootedSilent() {
- return new File("/system/bin/su").exists()
- || new File("/system/xbin/su").exists()
- || new File("/system/sbin/su").exists()
- || new File("/sbin/su").exists()
- || new File("/vendor/bin/su").exists();
- }
- /** 通过执行命令的方式判断手机是否root, 会有申请root权限的对话框出现 */
- public static boolean hasRooted() {
- return execSilent("echo test");
- }
- /** 执行命令获取结果集 */
- public static List<String> exec(String cmd) {
- List<String> dataList = null;
- BufferedWriter writer = null;
- BufferedReader reader = null;
- Process process = null;
- try {
- process = Runtime.getRuntime().exec("su");
- writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
- reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
- runCmd(writer, cmd);
- process.waitFor();
- dataList = new ArrayList<>();
- String content;
- while (null != (content = reader.readLine())) {
- dataList.add(content);
- }
- } catch (Exception e) {
- //e.printStackTrace();
- } finally {
- closeCloseable(reader, writer);
- if (process != null) process.destroy();
- }
- return dataList;
- }
- /** 执行一组命令 */
- public static void execSilent(String... cmd) {
- BufferedWriter writer = null;
- Process process = null;
- try {
- process = Runtime.getRuntime().exec("su");
- writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
- runCmd(writer, cmd);
- process.waitFor();
- } catch (Exception e) {
- // e.printStackTrace();
- } finally {
- closeCloseable(writer);
- if (process != null) process.destroy();
- }
- }
- /** 判断进程是否正在运行 */
- public static boolean isProcessRunning(String processName) {
- List<String> processList = exec("ps");
- for (int i = 1; i < processList.size(); i++) {
- if (processList.get(i).endsWith(processName)) {
- return true;
- }
- }
- return false;
- }
- /** 判断是否成功执行 */
- public static boolean execSilent(String cmd) {
- boolean result = false;
- BufferedWriter writer = null;
- Process process = null;
- try {
- process = Runtime.getRuntime().exec("su");
- writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
- runCmd(writer, cmd);
- process.waitFor();
- Log.d("runtime", "onCreate: process.exitValue() " + process.exitValue());
- result = process.exitValue() == 0;
- } catch (Exception e) {
- // e.printStackTrace();
- } finally {
- closeCloseable(writer);
- if (process != null) process.destroy();
- }
- return result;
- }
- // 关闭流文件
- private static void closeCloseable(Closeable... closeable) {
- for (int i = 0; i < closeable.length; i++) {
- if (null != closeable) {
- try {
- closeable[i].close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- // 执行命令
- private static void runCmd(BufferedWriter writer, String... cmd) throws IOException {
- for (int i = 0; i < cmd.length; i++) {
- writer.write(cmd[i] + "\n");
- writer.flush();
- }
- writer.write("exit \n");
- writer.flush();
- }
- }
Android 常用工具类之RuntimeUtil的更多相关文章
- 53. Android常用工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefer ...
- Android 常用工具类之SPUtil,可以修改默认sp文件的路径
参考: 1. 利用Java反射机制改变SharedPreferences存储路径 Singleton1900 2. Android快速开发系列 10个常用工具类 Hongyang import ...
- 【转】Android常用工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefe ...
- android常用工具类
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkIn ...
- Android 常用工具类之 ScreenUtil
需求: 截屏 参考 : Android开发:截屏 screenshot 功能小结 package bvb.de.openadbwireless.utils; import android.app ...
- Android 常用工具类之LogUtil,可以定位到代码行,双击跳转
package cn.utils; import android.util.Log; public class LogUtils { public static boolean isDebug = t ...
- Android常用工具类封装---SharedPreferencesUtil
SharedPreferences常用于保存一些简单的数据,如记录用户操作的配置等,使用简单. public class SharedPreferencesUtil { // ...
- Android 常用工具类之 DimenUtil
public class DimenUtil { /** sp转换成px */ public static int sp2px(float spValue) { float fontScale = M ...
- Android 常用工具类之DeviceInfoUtil
public class DeviceInfoUtil { private static WifiManager wifiManager = null; // wifi是否已连接 public sta ...
随机推荐
- Linux下获取公网IP地址
curl http://members.3322.org/dyndns/getipcurl http://ip.6655.com/ip.aspx
- python中几个常用的算术函数
1.lambda函数(匿名函数) lambda函数使用方式:lambda[参数1,参数2....]:表达式,列表 实例如下: lambda x : x * 2,[1,2,3,4] lambda 2.r ...
- centos linux安全和调优 第四十一节课
centos linux安全和调优 第四十一节课 上半节课 Linux安全 下半节课 Linux调优 2015-07-01linux安全和调优 [复制链接]--http://www.apele ...
- linux 文件目录
- SwipeRefreshLayout实现上拉加载下拉刷新
package com.example.swiperefreshlayoutdemo; import java.util.ArrayList;import java.util.HashMap; imp ...
- 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...
- IntelliJ IDEA 的 Java 热部署插件 JRebel 安装及使用
JRebel 介绍 JRebel for Intellij JRebel 在 Java Web 开发中, 一般更新了 Java 文件后要手动重启 Tomcat 服务器, 才能生效, 自从有了 JRe ...
- string函数分析
string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把 ...
- Uint8Array 对象
8 位无符号整数值的类型化数组.内容将初始化为 0.如果无法分配请求数目的字节,则将引发异常. 语法 uint8Array = new Uint8Array( length ); uint8Array ...
- java web工程读取及修改配置文件
这篇博客比自己讲解的详细: http://blog.sina.com.cn/s/blog_69398ed9010191jg.html 使用方法: 1)配置文件在web-info的class目录下,或者 ...