资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

手机执行linux命令,手机运行linux命令

在linux 上做的事,在安卓手机的命令行上也能做吗?

不能,虽然两者都是基于同一内核开发的产品,但是两者经过了后期开发,两者为了达到一些应用都做了优化、改动,所以在linux 上能做的事情,在安卓那里就不能做,不是说一定不能,这个是可以通过一些小的应用来实现一些的(个人见解)

目前累计服务客户近1000家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供成都网站设计、成都网站制作、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。

如何在APK程序里执行linux命令

Android的底层是Linux内核,因此在shell环境下可以运行Linux命令,尤其是经过root处理的android系统,基本上可以通过调用Linux命令完全控制手机,下面的RootCmd.java代码可以实现运行Linux外部命令。

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

{

//执行linux命令并且输出结果

protected static Vector execRootCmd(String paramString)

{

Vector localVector = new Vector();

try

{

Process localProcess = Runtime.getRuntime().exec("su ");//经过Root处理的android系统即有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();

}

}

//执行linux命令但不关注结果输出

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();

}

}

//判断机器Android是否已经root,即是否获取root权限

protected static boolean haveRoot()

{

int i = execRootCmdSilent("echo test"); //通过执行测试命令来检测

if (i != -1)  return true;

retrun false;

}

}

Android 获取root权限 执行Linux命令 检测是否有ROOT权限

Android继承了Linux权限严格的优点,很多命令需要root权限才能执行,比如说查看系统目录文件等,如果我们的程序需要用到查看此类文件或执行系统命令,就必须先获取Root权限。网上看了很多版本的检测是否有Root权限的方法,结果不论是否有权限,都返回true,根本就没有用,下面的方法经真机检测确定可行。

上代码:

package com.pocketdigi;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import android.app.Activity;

import android.os.Bundle;

public class RootActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

DataInputStream stream;

if(isRooted()){

try {

stream = Terminal("ping -c 2 ");

//其实ping并不需要root权限 ,这里是ping 2次后才停止,所以启动后需要一点时间才会有显示

//你可以自己换成需要root权限的命令试试

String temp;

while((temp=stream.readLine())!=null){

System.out.println(temp);

//循环输出返回值

}

} catch (Exception e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

}

public DataInputStream Terminal(String command) throws Exception

{

Process process = Runtime.getRuntime().exec("su");

//执行到这,Superuser会跳出来,选择是否允许获取最高权限

OutputStream outstream = process.getOutputStream();

DataOutputStream DOPS = new DataOutputStream(outstream);

InputStream instream = process.getInputStream();

DataInputStream DIPS = new DataInputStream(instream);

String temp = command + "\n";

//加回车

DOPS.writeBytes(temp);

//执行

DOPS.flush();

//刷新,确保都发送到outputstream

DOPS.writeBytes("exit\n");

//退出

DOPS.flush();

process.waitFor();

return DIPS;

}

public boolean isRooted() {

//检测是否ROOT过

DataInputStream stream;

boolean flag=false;

try {

stream = Terminal("ls /data/");

//目录哪都行,不一定要需要ROOT权限的

if(stream.readLine()!=null)flag=true;

//根据是否有返回来判断是否有root权限

} catch (Exception e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

return flag;

}

}


当前名称:手机执行linux命令,手机运行linux命令
网页路径:http://www.cdkjz.cn/article/dsiejec.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220