Android的底層是Linux內(nèi)核,因此在shell環(huán)境下可以運(yùn)行Linux命令,尤其是經(jīng)過root處理的android系統(tǒng),基本上可以通過調(diào)用Linux命令完全控制手機(jī),下面的RootCmd.java代碼可以實(shí)現(xiàn)運(yùn)行Linux外部命令。

專業(yè)從事網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),高端網(wǎng)站制作設(shè)計(jì),小程序開發(fā),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠服務(wù),采用HTML5+CSS3前端渲染技術(shù),成都響應(yīng)式網(wǎng)站建設(shè)公司,讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。
package?my.android.code;
import?android.os.Environment;
import?dalvik.annotation.Signature;
import?java.io.BufferedReader;
import?java.io.DataInputStream;
import?java.io.DataOutputStream;
import?java.io.File;
import?java.io.FileReader;
import?java.io.InputStream;
import?java.io.OutputStream;
import?java.util.Vector;
public?final?class?RootCmd
{
//執(zhí)行l(wèi)inux命令并且輸出結(jié)果
protected?static?Vector?execRootCmd(String?paramString)
{
Vector?localVector?=?new?Vector();
try
{
Process?localProcess?=?Runtime.getRuntime().exec("su?");//經(jīng)過Root處理的android系統(tǒng)即有su命令
OutputStream?localOutputStream?=?localProcess.getOutputStream();
DataOutputStream?localDataOutputStream?=?new?DataOutputStream(localOutputStream);
InputStream?localInputStream?=?localProcess.getInputStream();
DataInputStream?localDataInputStream?=?new?DataInputStream(localInputStream);
String?str1?=?String.valueOf(paramString);
String?str2?=?str1?+?"\n";
localDataOutputStream.writeBytes(str2);
localDataOutputStream.flush();
String?str3?=?localDataInputStream.readLine();
localVector.add(str3);
localDataOutputStream.writeBytes("exit\n");
localDataOutputStream.flush();
localProcess.waitFor();
return?localVector;
}
catch?(Exception?localException)
{
localException.printStackTrace();
}
}
//執(zhí)行l(wèi)inux命令但不關(guān)注結(jié)果輸出
protected?static?int?execRootCmdSilent(String?paramString)
{
try
{
Process?localProcess?=?Runtime.getRuntime().exec("su");
Object?localObject?=?localProcess.getOutputStream();
DataOutputStream?localDataOutputStream?=?new?DataOutputStream((OutputStream)localObject);
String?str?=?String.valueOf(paramString);
localObject?=?str?+?"\n";
localDataOutputStream.writeBytes((String)localObject);
localDataOutputStream.flush();
localDataOutputStream.writeBytes("exit\n");
localDataOutputStream.flush();
localProcess.waitFor();
localObject?=?localProcess.exitValue();
return?localObject;
}
catch?(Exception?localException)
{
localException.printStackTrace();
}
}
//判斷機(jī)器Android是否已經(jīng)root,即是否獲取root權(quán)限
protected?static?boolean?haveRoot()
{
int?i?=?execRootCmdSilent("echo?test");?//通過執(zhí)行測試命令來檢測
if?(i?!=?-1)??return?true;
retrun?false;
}
}
應(yīng)該是權(quán)限的問題,當(dāng)然可以在Mainfest里把相關(guān)網(wǎng)絡(luò)操作的權(quán)限加上試試,如果不行用JNI做,再不行就說明ifconfig需要root權(quán)限了
不能,雖然兩者都是基于同一內(nèi)核開發(fā)的產(chǎn)品,但是兩者經(jīng)過了后期開發(fā),兩者為了達(dá)到一些應(yīng)用都做了優(yōu)化、改動(dòng),所以在linux 上能做的事情,在安卓那里就不能做,不是說一定不能,這個(gè)是可以通過一些小的應(yīng)用來實(shí)現(xiàn)一些的(個(gè)人見解)
一、Android應(yīng)用啟動(dòng)服務(wù)執(zhí)行腳本
1
如何寫服務(wù)和腳本
在android源碼根目錄下有/device/tegatech/tegav2/init.rc文件相信大家對這個(gè)文件都不陌生(如果不明白就仔細(xì)研讀下android啟動(dòng)流程)。如果在該腳本文件中添加諸如以下服務(wù):
service
usblp_test
/data/setip/init.usblpmod.sh
oneshot
disabled
注解:每個(gè)設(shè)備下都會(huì)有自己對應(yīng)的init.rc,init.設(shè)備名.rc腳本文件。oneshot
disabled向我們說明了在系統(tǒng)啟動(dòng)的時(shí)候這個(gè)服務(wù)是不會(huì)自動(dòng)啟動(dòng)的。并且該服務(wù)的目的是執(zhí)行/data/setip/init.usblpmod.sh腳本。腳本的內(nèi)容你可以隨便寫,只要符合shell語法就可以了,比如腳本可以是簡單的設(shè)置eth0:
#
!
/system/bin/sh
//腳本的開頭必須這樣寫。
Ifconfig
eth0
172.16.100.206
netmask
255.255.0.0
up//設(shè)置ip的命令
文章標(biāo)題:手機(jī)執(zhí)行l(wèi)inux命令行,安卓手機(jī)命令行
文章源于:http://chinadenli.net/article18/dsicsdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、微信公眾號(hào)、自適應(yīng)網(wǎng)站、做網(wǎng)站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)