Android应用程序获取ROOT权限代码
16lz
2021-01-23
获取ROOT并修改mmcblk0分区权限为777:
import java.io.DataOutputStream;import android.app.Activity;public class MyTestPri extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //* Create a TextView and set its content. //* the text is retrieved by calling a native //* function. setContentView(R.layout.main); String apkRoot="chmod 777 /dev/block/mmcblk0";//SD卡分区路径,也可能是mmcblk1随系统版本定,当前程序路径请用getPackageCodePath(); RootCmd(apkRoot); } public boolean RootCmd(String cmd){ Process process = null; DataOutputStream os = null; try{ process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); os.writeBytes(cmd+ "\n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); } catch (Exception e) { return false; } finally { try { if (os != null) { os.close(); } process.destroy(); } catch (Exception e) { } } return true; }}
以上程序第一次运行时,会弹出类似“XXX应用程序想要获取root权限”这样提示的对话框。这时你只需确认许可即可,下次再次执行时,Android会自动授权该程序进行ROOT提权。
执行完成后,可以看到该设备权限已被修改为777,注:如果只是想按照扇区读写SD卡,修改为606就足够了,或者再尝试低一点的权限。
另外,关于TF/SD卡的挂载点问题,好像有的版本会挂载到mmcblk0,有的会挂载到mmcblk1上,具体还是要判断一下,有深入研究过的不妨留言补充。
更多相关文章
- android交叉编译c程序
- Android应用程序键盘(Keyboard)消息处理机制分析(23)
- Android判断程序是否第一次启动
- Android uses-permission 权限大全
- Android 返回键双击退出程序
- Android获取系统应用及安装应用的权限列表
- 如何在Android 11 中正确请求位置权限?以及Android 8 - 11位置权
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Dr
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Dr