Android root权限判断

import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
import android.app.Activity; 
import android.os.Bundle; 
  
public class RootActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        DataInputStream stream; 
        if(isRooted()){ 
        try { 
            stream = Terminal("ping -c 2 www.pocketdigi.com"); 
            //其实ping并不需要root权限 ,这里是ping 2次后才停止,所以启动后需要一点时间才会有显示 
            //你可以自己换成需要root权限的命令试试 
            String temp; 
            while((temp=stream.readLine())!=null){ 
                System.out.println(temp); 
                //循环输出返回值 
            } 
        } catch (Exception e1) { 
            // TODO Auto-generated catch block 
            e1.printStackTrace(); 
        } 
        } 
    } 
    public DataInputStream Terminal(String command) throws Exception 
    { 
        Process process = Runtime.getRuntime().exec("su"); 
        //执行到这,Superuser会跳出来,选择是否允许获取最高权限 
        OutputStream outstream = process.getOutputStream(); 
        DataOutputStream DOPS = new DataOutputStream(outstream); 
        InputStream instream = process.getInputStream(); 
        DataInputStream DIPS = new DataInputStream(instream); 
        String temp = command + "\n"; 
        //加回车 
        DOPS.writeBytes(temp); 
        //执行 
        DOPS.flush(); 
        //刷新,确保都发送到outputstream 
        DOPS.writeBytes("exit\n"); 
        //退出 
        DOPS.flush(); 
        process.waitFor(); 
        return DIPS; 
    } 
    public boolean isRooted() { 
        //检测是否ROOT过 
        DataInputStream stream; 
        boolean flag=false; 
        try { 
            stream = Terminal("ls /data/"); 
            //目录哪都行,不一定要需要ROOT权限的 
            if(stream.readLine()!=null)flag=true; 
            //根据是否有返回来判断是否有root权限 
        } catch (Exception e1) { 
            // TODO Auto-generated catch block 
            e1.printStackTrace(); 
  
        } 
  
        return flag; 
    } 
  
  

你可能感兴趣的:(root)