最近学习Android的时候写个小程序需要用到获取ROOT权限,在网上找了好久,发现这种方法可行,前提时设备必须已经破解过!能执行su命令。

一、建一个方法:代码如下:

Java代码

  1. package cn.ycmoon.utility;  
  2. import java.io.DataOutputStream;  
  3. import android.app.Activity;  
  4. import android.util.Log;  
  5. public class SystemManager extends Activity  
  6. {  
  7. /**
  8.      * 应用程序运行命令获取 Root权限,设备必须已破解(获得ROOT权限)
  9.      * @param command 命令:String apkRoot="chmod 777 "+getPackageCodePath(); RootCommand(apkRoot);
  10.      * @return 应用程序是/否获取Root权限
  11.      */
  12. public static boolean RootCommand(String command)  
  13.     {  
  14.         Process process = null;  
  15.         DataOutputStream os = null;  
  16. try
  17.         {  
  18.             process = Runtime.getRuntime().exec("su");  
  19.             os = new DataOutputStream(process.getOutputStream());  
  20.             os.writeBytes(command + "\n");  
  21.             os.writeBytes("exit\n");  
  22.             os.flush();  
  23.             process.waitFor();  
  24.         } catch (Exception e)  
  25.         {  
  26.             Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage());  
  27. return false;  
  28.         } finally
  29.         {  
  30. try
  31.             {  
  32. if (os != null)  
  33.                 {  
  34.                     os.close();  
  35.                 }  
  36.                 process.destroy();  
  37.             } catch (Exception e)  
  38.             {  
  39.             }  
  40.         }  
  41.         Log.d("*** DEBUG ***", "Root SUC ");  
  42. return true;  
  43.     }  
package cn.ycmoon.utility; import java.io.DataOutputStream; import android.app.Activity; import android.util.Log; public class SystemManager extends Activity { /** * 应用程序运行命令获取 Root权限,设备必须已破解(获得ROOT权限) * @param command 命令:String apkRoot="chmod 777 "+getPackageCodePath(); RootCommand(apkRoot); * @return 应用程序是/否获取Root权限 */ public static boolean RootCommand(String command) { Process process = null; DataOutputStream os = null; try { process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); os.writeBytes(command + "\n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); } catch (Exception e) { Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage()); return false; } finally { try { if (os != null) { os.close(); } process.destroy(); } catch (Exception e) { } } Log.d("*** DEBUG ***", "Root SUC "); return true; } }

二、在应用程序的MainActivity方法中:

Java代码

  1. public class MainActivity extends Activity  
  2. {  
  3. public void onCreate(Bundle savedInstanceState)  
  4.     {  
  5. super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.         String apkRoot="chmod 777 "+getPackageCodePath();  
  8.         SystemManager.RootCommand(apkRoot);  
  9.     }  
public class MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String apkRoot="chmod 777 "+getPackageCodePath(); SystemManager.RootCommand(apkRoot); } }

这样,在应用程序运行的时候,会弹出消息对话框“应用程序已获取root权限”