胖蔡说技术
随便扯扯

Android 代码获取shell环境

android中一般获取到系统的一些参数等都比较麻烦,由于android的内核是linux,获取到shell,一切操作都显得简单多了。

try {
             Process p = Runtime.getRuntime().exec(
                     "ll /storage/external_storage/sda1");
             String s="";

             BufferedReader in = new BufferedReader(new InputStreamReader(
                     p.getInputStream()));
             String line = null;
             while ((line = in.readLine()) != null) {
                 s += line + "\n";
             }
             if(s!=null){
                 Toast.makeText(MainActivity.this, s, 0).show();
                 test.setText(s);
             }
         } catch (IOException e) {
             e.printStackTrace();
         }
 

如上所示,通Runtime.getRuntime()直接调用系统命令环境,通过Linux命令的方式获取系统信息,但此种方式的权限有限,一般只能读取sdcard里面的文件信息。

public  String runRootCommand(String[] command){ 
          Process process =null; 
          DataOutputStream os =null; 
             String s="";
              try{ 
                 process =Runtime.getRuntime().exec("su"); 
                  os =new DataOutputStream(process.getOutputStream()); 
                  for(int i=0;i<command.length;i++)
                  {
                       os.writeBytes(command[i]+"\n");
                  }
                   os.writeBytes("exit\n"); 
                   os.flush(); 
                   process.waitFor(); 

               }catch(Exception e){ 
                   Log.i(“exception:”e.getMessage()); 
                 return e.getMessage(); 
               }finally{ 
                         try{ 
                               if(os !=null)
                                    os.close(); 
                                 process.destroy(); 
                             }catch(Exception e){ 
                               e.printStackTrace();
                            } 
           }
             return s; 
 } 
 

通过su获取系统root权限,然后通过流的形式,写入命令进行操作。通过这种方式可以轻松的写入系统命令对android系统进行操作。

赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » Android 代码获取shell环境
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏