Android 检测是否有ROOT权限

android (linux)很多命令需要root权限才能执行,比如说查看系统目录文件等,如果我们的程序需要用到查看此类文件或执行系统命令,就必须先获取Root权限。


  1. import java.io.DataInputStream;  
  2. import java.io.DataOutputStream;  
  3. import java.io.InputStream;  
  4. import java.io.OutputStream;  
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7.    
  8. public class RootActivity extends Activity  
  9.       
  10.     @Override  
  11.     public void onCreate(Bundle savedInstanceState)  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.main);  
  14.         DataInputStream stream;  
  15.         if(isRooted()){  
  16.         try  
  17.             stream Terminal("ping -c www.pocketdigi.com");  
  18.             //其实ping并不需要root权限 ,这里是ping 2次后才停止,所以启动后需要一点时间才会有显示  
  19.             //你可以自己换成需要root权限的命令试试  
  20.             String temp;  
  21.             while((temp=stream.readLine())!=null){  
  22.                 System.out.println(temp);  
  23.                 //循环输出返回值  
  24.              
  25.         catch (Exception e1)  
  26.             // TODO Auto-generated catch block  
  27.             e1.printStackTrace();  
  28.          
  29.          
  30.      
  31.     public DataInputStream Terminal(String command) throws Exception  
  32.      
  33.         Process process Runtime.getRuntime().exec("su");  
  34.         //执行到这,Superuser会跳出来,选择是否允许获取最高权限  
  35.         OutputStream outstream process.getOutputStream();  
  36.         DataOutputStream DOPS new DataOutputStream(outstream);  
  37.         InputStream instream process.getInputStream();  
  38.         DataInputStream DIPS new DataInputStream(instream);  
  39.         String temp command "\n";  
  40.         //加回车  
  41.         DOPS.writeBytes(temp);  
  42.         //执行  
  43.         DOPS.flush();  
  44.         //刷新,确保都发送到outputstream  
  45.         DOPS.writeBytes("exit\n");  
  46.         //退出  
  47.         DOPS.flush();  
  48.         process.waitFor();  
  49.         return DIPS;  
  50.      
  51.     public boolean isRooted()  
  52.         //检测是否ROOT过  
  53.         DataInputStream stream;  
  54.         boolean flag=false;  
  55.         try  
  56.             stream Terminal("ls /data/");  
  57.             //目录哪都行,不一定要需要ROOT权限的  
  58.             if(stream.readLine()!=null)flag=true;  
  59.             //根据是否有返回来判断是否有root权限  
  60.         catch (Exception e1)  
  61.             // TODO Auto-generated catch block  
  62.             e1.printStackTrace();  
  63.    
  64.          
  65.    
  66.         return flag;  
  67.      
  68.    
  69.    
  70. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值