檢測Android手機是否具有root權限和靜默安裝
執行靜默安裝時,需要向手機申請獲取root權限,如果手機具有root權限,則可以完成安裝。代碼如下:
MainActivity:
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";
@Override
protected 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" />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!