博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android shell command execute Demo
阅读量:6638 次
发布时间:2019-06-25

本文共 3422 字,大约阅读时间需要 11 分钟。

1 package com.android.utils;  2   3   4 import java.io.File;  5   6 import java.io.IOException;  7 import java.io.InputStream;  8 import java.util.ArrayList;  9 import java.util.List; 10  11 /** 12  * 本类主要用于在Java层执行Linux shell命令,获取一些系统下的信息 13  * 本例中的dmesg需要一些额外的权限才能使用 14  * 参考文章: 15  *    1. read android dmesg with code 16  *        http://stackoverflow.com/questions/3643599/read-android-dmesg-with-code 17  *    2. Java执行带重定向或管道的shell命令的问题 18  *        http://www.linuxidc.com/Linux/2012-07/64526.htm 19  * 20  * @author zengjf 21  */ 22 public class ShellExecute { 23     /** 24      * 本函数用于执行Linux shell命令  25      *  26      * @param command                 shell命令,支持管道,重定向 27      * @param directory               在指定目录下执行命令 28      * @return                        返回shell命令执行结果 29      * @throws IOException            抛出IOException 30      */ 31     public static String execute ( String command, String directory )   32             throws IOException {   33          34         // check the arguments 35         if (null == command)  36             return ""; 37  38         if (command.trim().equals(""))  39             return ""; 40          41         if (null == directory || directory.trim().equals(""))  42             directory = "/"; 43  44         String result = "" ;   45  46         List
cmds = new ArrayList
(); 47 cmds.add("sh"); 48 cmds.add("-c"); 49 cmds.add(command); 50 51 try { 52 ProcessBuilder builder = new ProcessBuilder(cmds); 53 54 if ( directory != null ) 55 builder.directory ( new File ( directory ) ) ; 56 57 builder.redirectErrorStream (true) ; 58 Process process = builder.start ( ) ; 59 60 //得到命令执行后的结果 61 InputStream is = process.getInputStream ( ) ; 62 byte[] buffer = new byte[1024] ; 63 while ( is.read(buffer) != -1 ) 64 result = result + new String (buffer) ; 65 66 is.close ( ) ; 67 } catch ( Exception e ) { 68 e.printStackTrace ( ) ; 69 } 70 return result.trim() ; 71 } 72 73 /** 74 * 本函数用于执行Linux shell命令,执行目录被指定为:"/" 75 * 76 * @param command shell命令,支持管道,重定向 77 * @return 返回shell命令执行结果 78 * @throws IOException 抛出IOException 79 */ 80 public static String execute (String command) throws IOException { 81 82 // check the arguments 83 if (null == command) 84 return ""; 85 86 if (command.trim().equals("")) 87 return ""; 88 89 return execute(command, "/"); 90 } 91 92 /** 93 * 本函数用于判断dmesg中是否存在pattern字符串,执行目录被指定为:"/" 94 * 95 * @param pattern 给grep匹配的字符串 96 * @return true: dmesg中存在pattern中的字符串
97 * false:dmesg中不存在pattern中的字符串 98 * @throws IOException 抛出IOException 99 */100 public static boolean deviceExist(String pattern) throws IOException{101 102 // check the arguments103 if (null == pattern) 104 return false;105 106 if (pattern.trim().equals("")) 107 return false;108 109 return execute("dmesg | grep " + pattern).length() > 0;110 }111 }

 

转载地址:http://pjpvo.baihongyu.com/

你可能感兴趣的文章
团购网站为谁做了嫁衣?
查看>>
Windows Server 2012 之Hyper-v初识
查看>>
Photoshop制作一只可爱的卡通小鸟
查看>>
看电影“刺客聂隐娘”前必须了解的知识(绝无剧透)
查看>>
观Citrix最新官方发布评测报告有感-外行看热闹,内行看门道
查看>>
IT女生的2011经历
查看>>
Swing Threading的限制
查看>>
用户直销分析应用---如何使用RFM分析最具价值的网游付费用户
查看>>
Android应用开发之Android平台向web应用提交信息
查看>>
void及void指针含义的深刻解析
查看>>
[转]条码扫描二维码扫描——ZXing android 源码简化
查看>>
css 调试技巧
查看>>
Delphi 框架Frames的使用
查看>>
基础学习笔记之opencv(15):离散傅里叶变换
查看>>
PHP实现mb_substr函数
查看>>
Html.RenderPartial和Html.Partial在Razor视图中的区别
查看>>
位运算枚举解决象棋将帅问题
查看>>
更改TabHost标签的背景
查看>>
linux几种快速清空文件内容的方法 - nanyun2010的专栏 - 博客频道 - CSDN.NET
查看>>
java linq
查看>>