检测手机是否具有root权限和静默安装

来源:互联网 发布:屏幕取词翻译软件 编辑:程序博客网 时间:2024/05/15 03:46

执行静默安装时,需要向手机申请获取root权限,如果手机具有root权限,则可以完成安装。代码如下:

MainActivity:

package com.home.checkroot;import java.io.DataOutputStream;import java.io.File;import java.io.OutputStream;import android.os.Bundle;import android.os.Environment;import android.app.Activity;import android.util.Log;public class MainActivity extends Activity {private static final String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// 笔者手机上的apk路径String apkName = Environment.getExternalStorageDirectory().toString()+ File.separator + "police.apk";Log.e(TAG, "root = " + haveRoot("pm install -r " + apkName));}/** * 检测是否具体root权限 *  * @param cmd * @return */private boolean haveRoot(String cmd) {int i = execRootCmdSilent(cmd);if (i != -1) {return true;}return false;}/** * 执行静默安装 *  * @param paramString * @return */private int execRootCmdSilent(String paramString) {int result = -1;try {Process localProcess = Runtime.getRuntime().exec("su");OutputStream os = localProcess.getOutputStream();DataOutputStream dos = new DataOutputStream(os);dos.writeBytes(paramString + "\n");dos.flush();dos.writeBytes("exit\n");dos.flush();localProcess.waitFor();result = localProcess.exitValue();} catch (Exception e) {e.printStackTrace();}return result;}}

权限:

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />




 

1 0