让Android应用程序申请获取ROOT权限
16lz
2021-01-26
有时候我们写 Android APP,需要让它获取 ROOT 权限,那么如何让 APP 去向系统申请呢?下面提供一个方法,前提是系统是已经 ROOT 权限了,能够执行能 su 命令。如果不能,可以参考上一篇: 获取Android系统的ROOT权限 。
1. 首先编写一个 SystemManager 类。
01 | package net.nowamagic.magicapp_v17; |
02 |
03 | import java.io.DataOutputStream; |
04 |
05 | import android.app.Activity; |
06 | import android.util.Log; |
07 |
08 | public class SystemManager extends Activity { |
09 | |
10 | /** |
11 | * 应用程序运行命令获取 Root权限,设备必须已破解(获得ROOT权限) |
12 | * @param command 命令:String apkRoot="chmod 777 "+getPackageCodePath(); RootCommand(apkRoot); |
13 | * @return 应用程序是/否获取Root权限 |
14 | */ |
15 | public static boolean RootCommand(String command) |
16 | { |
17 | Process process = null ; |
18 | DataOutputStream os = null ; |
19 | try |
20 | { |
21 | process = Runtime.getRuntime().exec( "su" ); |
22 | os = new DataOutputStream(process.getOutputStream()); |
23 | os.writeBytes(command + "\n" ); |
24 | os.writeBytes( "exit\n" ); |
25 | os.flush(); |
26 | process.waitFor(); |
27 | } catch (Exception e) |
28 | { |
29 | Log.d( "*** DEBUG ***" , "ROOT REE" + e.getMessage()); |
30 | return false ; |
31 | } finally |
32 | { |
33 | try |
34 | { |
35 | if (os != null ) |
36 | { |
37 | os.close(); |
38 | } |
39 | process.destroy(); |
40 | } catch (Exception e) |
41 | { |
42 | } |
43 | } |
44 | Log.d( "*** DEBUG ***" , "Root SUC " ); |
45 | return true ; |
46 | } |
47 | |
48 | } |
2. 然后在 MainActivity 中加入这么两句:
01 | public class MainActivity extends Activity |
02 | { |
03 | public void onCreate(Bundle savedInstanceState) |
04 | { |
05 | super .onCreate(savedInstanceState); |
06 | setContentView(R.layout.main); |
07 | String apkRoot= "chmod 777 " +getPackageCodePath(); |
08 | SystemManager.RootCommand(apkRoot); |
09 | } |
10 | } |
运行 APP,即可向系统申请 ROOT 权限了。
http://www.nowamagic.net/academy/detail/50282009
更多相关文章
- android 唯一识别码笔记
- Android中两种设置全屏或者无标题的方法
- 【Android】深入理解Android中的自定义属性
- 获取手机的视频和图片的缩略图
- Android(安卓)推送-个推
- 从android相册获取所有图片的路径
- View绘制体系(三)——AttributeSet与TypedArray详解
- 获取andrid apn信息
- [代码片段] 【转】Android以最省内存的方式读取本地资源的