檢測Android手機是否具有root權限和靜默安裝

jopen 10年前發布 | 44K 次閱讀 Android Android開發 移動開發

執行靜默安裝時,需要向手機申請獲取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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!