赞
踩
- <span style="font-size:18px;"> 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("echo \"Do I have root?\" >/system/sd/temporary.txt\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;
- }</span><pre name="code" class="java"><span style="font-size:18px;">
- </span>

- <span style="font-size:18px;">或者:
- /**
- * 判断当前手机是否有ROOT权限
- * @return
- */
- public boolean isRoot(){
- boolean bool = false;
- try{
- if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exists())){
- bool = false;
- } else {
- bool = true;
- }
- Log.d(TAG, "bool = " + bool);
- } catch (Exception e) {
-
- }
- return bool;
- }</span>

- <span style="font-size:18px;">import java.io.DataOutputStream;
- import android.app.Activity;
- import android.util.Log;
- /**
- * 应用程序运行命令获取 Root权限,设备必须已破解(获得ROOT权限)
- * @param command 命令:String apkRoot="chmod 777 "+getPackageCodePath(); RootCommand(apkRoot);
- * @return 应用程序是/否获取Root权限
- */
- public 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;
- }
- }</span>

C.对上述代码进行调用
- <span style="font-size:18px;">public class MainActivity extends Activity
- {
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- String apkRoot="chmod 777 "+getPackageCodePath();</span>
- <pre name="code" class="cpp"><span style="font-size:18px;"> //读、写、运行三项权限可以用数字表示,就是r=4,w=2,x=1。所以,上面的例子中的rw-r--r--用数字表示成644。
- //反过来说777就是rwxrwxrwx,意思是该登录用户(可以用命令id查看)、他所在的组和其他人都有最高权限。
- //getPackageCodePath():获取自身APK路径
- SystemManager.RootCommand(apkRoot);</span><pre name="code" class="java"><span style="font-size:18px;">}</span>
a.在代码中,AndroidManifest.xml文件的manifest项中,添加android:sharedUserId="android.uid.system"
b.编译程序,得到APK文件,如src.apk
c.将APK文件用压缩软件打开,删除META-INF目录里面的CERT.SF和CERT.RSA两个文件
d.给*.apk文件签名
这步需要在android源码中进行
cd build/tools/signapk
e.运行命令(其中signapk.jar platform.x509.pem platform.pk8这3个文件在源码的build目录下可以找到)
java -jar signapk.jar platform.x509.pem platform.pk8 src.apk dst.apk
f.dst.apk安装后就有system权限,就可以访问设备
第一步,注册一个广播类,用于监听权限的变化:
android:permission 表示此功能需要的权限。
android:name="android.app.action.DEVICE_ADMIN_ENABLED"表示此动作的跳转界面。
<meta-data android:name="android.app.device_admin"android:resource="@xml/device_admin" />表示这个应用可以管理的权限清单。
XML清单:
第二步,广播服务类的JAVA代码,重写一些必要的实现函数:
广播类deviceAdminReceiver 继承DeviceAdminReceiver
第三步,也就是最关键的操作代码了
激活相关
代码中的自定义区域2是可以输入一些自己想说的话,和广播类中的android:description="@string/description"一样。
这个是系统提供的两个自定义区域。
锁屏相关
锁屏操作,由于是模拟器不能做到真正错屏,只能停到初始模拟器进来需要解锁的状态,屏幕不会变暗。
设置屏幕灯光变暗时间相关
et是定义的一个EditText,用于进行时间的输入
屏幕变暗最小时间为5秒
恢复出厂设置相关
恢复出厂设置只能通过真机去操作,模拟器操作后会停留在正在关机的dialog画面
恢复后数据会被清空,因此要做好备份操作。
注:激活设备管理器也可以用于防卸载,只是到Android5.0以上版本,可能会失灵。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。