編輯:關於Android編程
本文介紹Android系統上獲取TF/SD卡ROOT權限方法,應用程序獲取Root權限有個前提是該設備已經破解ROOT過,比如使用SuperOneClick軟件,否則執行SU命令毫無效果,演示程序使用chmod方式修改某個設備(TF卡分區)的訪問權限,比如要按照物理扇區訪問讀寫TF卡或希望刪除某些重要文件時,在Android系統上必須具備ROOT權限才可以。
還有一種我們開發人員經常會遇到就是/system/lib目錄控制問題,直接使用adb去控制Android設備都是無權限的,每次遇到此類問題都是非常撓頭,各家源碼定制不同也不是每個設備都能解決。
執行su命令時無反應,可能是您的設備沒有ROOT,還有一種可能,您的/system/bin下面根本就沒有這個文件(可以找其它同版本上su文件拷貝過來)。
下載地址:http://forum.xda-developers.com/showthread.php?t=803682
用法參考:http://hi.baidu.com/cy594/blog/item/190e8794021c150bd31b7041.html
該ROOT破解軟件的原理就是利用Android系統的漏洞進行提權,最終目的開啟ROOT賬戶登錄,且在下文執行SU命令時不會執行失敗。如果您對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上,具體還是要判斷一下,有深入研究過的不妨留言補充。
除了SuperOneClick,如果我們擁有修改系統源碼(init.rc)的權限,似乎去修改init.rc更加規范些。(請注意system權限和root權限是兩種不同的權限)。當然,前提是我們要知道init.rc中的初始化語句寫法。
先來看看效果圖如何使用示例代碼PromptViewHelper pvHelper = new PromptViewHelper(mActivity);pvHelper.s
Android 5.0 是 Google 於 2014 年 10 月 15 日(美國太平洋時間)發布的全新 Android 操作系統。北京時間 2014 年 6 月 26
不知不覺中,帶你一步步深入了解View系列的文章已經寫到第四篇了,回顧一下,我們一共學習了LayoutInflater的原理分析、視圖的繪制流程、視圖的狀態及重繪等知識,
閱讀本節內容前可先了解 apkplug基礎教程 本教程是基於apkplug V1.6.8 版本編寫 最新開發方式以官網為准 可下載最新的apkplugdemo源碼h