Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android獲取ROOT權限方法匯總大全

Android獲取ROOT權限方法匯總大全

編輯:關於Android編程

本文介紹Android系統上獲取TF/SD卡ROOT權限方法,應用程序獲取Root權限有個前提是該設備已經破解ROOT過,比如使用SuperOneClick軟件,否則執行SU命令毫無效果,演示程序使用chmod方式修改某個設備(TF卡分區)的訪問權限,比如要按照物理扇區訪問讀寫TF卡或希望刪除某些重要文件時,在Android系統上必須具備ROOT權限才可以。

還有一種我們開發人員經常會遇到就是/system/lib目錄控制問題,直接使用adb去控制Android設備都是無權限的,每次遇到此類問題都是非常撓頭,各家源碼定制不同也不是每個設備都能解決。

執行su命令時無反應,可能是您的設備沒有ROOT,還有一種可能,您的/system/bin下面根本就沒有這個文件(可以找其它同版本上su文件拷貝過來)。

一、使用SuperOneClick等軟件ROOT提權

下載地址:http://forum.xda-developers.com/showthread.php?t=803682

用法參考:http://hi.baidu.com/cy594/blog/item/190e8794021c150bd31b7041.html

該ROOT破解軟件的原理就是利用Android系統的漏洞進行提權,最終目的開啟ROOT賬戶登錄,且在下文執行SU命令時不會執行失敗。如果您對ROOT結果及潛在風險知之甚少,請謹慎而為。

二、應用程序獲取ROOT權限代碼

示例獲取ROOT並修改mmcblk0分區權限為777:

package com.android.myapp.utility;

import java.io.DataOutputStream;

import android.app.Activity;

public class MyTestPri extends Activity{

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//* Create a TextView and set its content.
//* the text is retrieved by calling a native
//* function.

setContentView(R.layout.main);
String apkRoot="chmod 777 /dev/block/mmcblk0";//SD卡分區路徑,也可能是mmcblk1隨系統版本定,當前程序路徑請用getPackageCodePath();
RootCmd(apkRoot);
}

public boolean RootCmd(String cmd){
Process process = null;
DataOutputStream os = null;
try{
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(cmd+ "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (Exception e) {
return false;
} finally {
try {
if (os != null) {
os.close();
}
process.destroy();
} catch (Exception e) {
}
}
return true;
}
}

以上程序第一次運行時,會彈出類似“XXX應用程序想要獲取root權限”這樣提示的對話框。這時你只需確認許可即可,下次再次執行時,Android會自動授權該程序進行ROOT提權。

執行完成後,可以看到該設備權限已被修改為777,注:如果只是想按照扇區讀寫SD卡,修改為606就足夠了,或者再嘗試低一點的權限。

另外,關於TF/SD卡的掛載點問題,好像有的版本會掛載到mmcblk0,有的會掛載到mmcblk1上,具體還是要判斷一下,有深入研究過的不妨留言補充。

三、修改init.rc ROOT提權

除了SuperOneClick,如果我們擁有修改系統源碼(init.rc)的權限,似乎去修改init.rc更加規范些。(請注意system權限和root權限是兩種不同的權限)。當然,前提是我們要知道init.rc中的初始化語句寫法。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved