Android应用程序获取ROOT权限的方法 (基础篇)
16lz
2021-01-23
要在android应用程序中使用root权限,那么运行程序的设备必须具有root权限
public static boolean runRootCommand(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(TAG, "the device is not rooted, error message: " + e.getMessage()); return false; } finally { try { if (os != null) { os.close(); } if(process != null) { process.destroy(); } } catch (Exception e) { e.printStackTrace(); } } return true; }
如果设备获取了root权限,那么程序执行su命令时,就会提示用户进行授权,如图:
写个小程序需要用到获取ROOT权限,在网上找了好久,发现这种方法可行,前提时设备必须已经破解过!能执行su命令。
一、建一个方法:代码如下:
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方法中:二、在应用程序的MainActivity方法中:
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权限”
更多相关文章
- 程序中如何获取Android的Root权限
- Android模仿乐淘的应用程序分析源码
- android应用程序组件之间的通讯
- android 学习五 设置应用程序全屏(没有状态栏和标题栏)
- Android应用程序组件Content Provider在应用程序之间共享数据的
- Android的权限分类