android执行shell
A. android apk 怎么执行adb shell命令
android中执行shell命令有两种方式: 1.直接在代码中用java提供的Runtime 这个类来执行命令,以下为完整示例代码。 public void execCommand(String command) throws IOException { // start the ls command running //String[] args = new String[]{"sh", "-c", command}; Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec(command); //这句话就是shell与高级语言间的调用 //如果有参数的话可以用另外一个被重载的exec方法 //实际上这样执行时启动了一个子进程,它没有父进程的控制台 //也就看不到输出,所以需要用输出流来得到shell执行后的输出 InputStream inputstream = proc.getInputStream(); InputStreamReader inputstreamreader = new InputStreamReader(inputstream); BufferedReader bufferedreader = new BufferedReader(inputstreamreader); // read the ls output String line = ""; StringBuilder sb = new StringBuilder(line); while ((line = bufferedreader.readLine()) != null) { //System.out.println(line); sb.append(line); sb.append('\n'); } //tv.setText(sb.toString()); //使用exec执行不会等执行成功以后才返回,它会立即返回 //所以在某些情况下是很要命的(比如复制文件的时候) //使用wairFor()可以等待命令执行完成以后才返回 try { if (proc.waitFor() != 0) { System.err.println("exit value = " + proc.exitValue()); } } catch (InterruptedException e) { System.err.println(e); } } } 2.直接安装shell模拟器,即已经开发好的android应用,启动后类似windows的dos命令行,可以直接安装使用,可执行常用的linux命令,应用在附件。 shell.apk大小:455.51K所需财富值:5 已经过网络安全检测,放心下载 点击下载下载量:1
B. 如何在android程序中执行adb shell命令
android程序执行adbshell命令(实例源码)packagenet.gimite.nativeexe;importjava.io.BufferedReader;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjava.net.MalformedURLException;importjava.net.URL;importnet.gimite.nativeexe.R;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.*;{privateTextViewoutputView;privateButtonlocalRunButton;privateEditTextlocalPathEdit;privateHandlerhandler=newHandler();privateEditTexturlEdit;privateButtonremoteRunButton;/**.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);outputView=(TextView)findViewById(R.id.outputView);localPathEdit=(EditText)findViewById(R.id.localPathEdit);localRunButton=(Button)findViewById(R.id.localRunButton);localRunButton.setOnClickListener(onLocalRunButtonClick);}=newOnClickListener(){publicvoidonClick(Viewv){Stringoutput=exec(localPathEdit.getText().toString());output(output);//try{//////Processprocess=Runtime.getRuntime().exec(localPathEdit.getText().toString());////}catch(IOExceptione){////TODOAuto-generatedcatchblock//e.printStackTrace();//}}};//ExecutesUNIXcommand.privateStringexec(Stringcommand){try{Processprocess=Runtime.getRuntime().exec(command);BufferedReaderreader=newBufferedReader(newInputStreamReader(process.getInputStream()));intread;char[]buffer=newchar[4096];StringBufferoutput=newStringBuffer();while((read=reader.read(buffer))>0){output.append(buffer,0,read);}reader.close();process.waitFor();returnoutput.toString();}catch(IOExceptione){thrownewRuntimeException(e);}catch(InterruptedExceptione){thrownewRuntimeException(e);}}privatevoiddownload(StringurlStr,StringlocalPath){try{URLurl=newURL(urlStr);HttpURLConnectionurlconn=(HttpURLConnection)url.openConnection();urlconn.setRequestMethod("GET");urlconn.setInstanceFollowRedirects(true);urlconn.connect();InputStreamin=urlconn.getInputStream();FileOutputStreamout=newFileOutputStream(localPath);intread;byte[]buffer=newbyte[4096];while((read=in.read(buffer))>0){out.write(buffer,0,read);}out.close();in.close();urlconn.disconnect();}catch(MalformedURLExceptione){thrownewRuntimeException(e);}catch(IOExceptione){thrownewRuntimeException(e);}}privatevoidoutput(finalStringstr){Runnableproc=newRunnable(){publicvoidrun(){outputView.setText(str);}};handler.post(proc);}}
C. android执行shell脚本打开蓝牙
网络的问题。shell脚本打开蓝牙多数是网络连接异常导致。
1、首先打开电脑检查网络。
2、其次打开android程序进行测试网络连接是否异常。
3、最后重新连接网络后重新登录该程序即可。
D. android的shell有啥用
android 底层驱动实际linux, linux中大量使用了shell。那 shell到底是什么东西呢?个人理解相当于windows中的
cmd,但是shell很强大,如果你能熟练使用shell,在android开发中如虎添翼。
下面就android常用的shell进行一下说明:
1. cd (change directory)
如: cd / 跳转到根目录 cd ~ 跳转到用户所在的目录
2. ls (list)
显示目录结构
3. chmod 777 path
在开发过程中,如果发现文件不能读写,首先应该想到是否给user权限,可以通过该命令试试看
改变目录属性,如果目录下面还有子目录,加上-R
4. chown 该变目录所有者
如果目录还有子目录,加上-R
5. rm 目录
如果是文件加上-f
如果是目录加上-r
6. find
找文件,如果找到R.java文件,然后删除它
find . -name R.java|args rm -rf
find . -name *.svn|xargs rm -rf
find . -name *.class|xargs rm -rf
7. 替换,如某个文件中根据某个模式替换某行
如下命令就是找到FPTitlebar.java这个java文件,找不到// pm.shutDown();,用pm.shutDown();替换之。
find . -name FPTitlebar.java -exec sed -i 's\// pm.shutDown();\ pm.shutDown();\' {} \;
比较难的如下所示:
find . -name *.java -exec sed -i 's\KeyEvent.KEYCODE_2\KeyEvent.KEYCODE_CAMERA \g ' {} \;
find . -name *.java -exec sed -i 's\KeyEvent.KEYCODE_1\KeyEvent.KEYCODE_CALL \g ' {} \;
找到所有的java文件,用KeyEvent.KEYCODE_CAMERA替换KeyEvent.KEYCODE_2
8. 编译android源码时实际也是执行shell命令:
//执行build 目录下envsetup.sh命令
. build/envsetup.sh
//弹出选择框,分别选择第一个,第一个,第五个,第三个
choosecombo 1 1 5 3
//设置环境变量
export ANDROID_JAVA_HOME=$JAVA_HOME
//执行update命令
make update-api
//起4 个线程同时编译
make -j 4
9. 如果你使用了第三so包,需要在android编译,直接在mk文件中添加如下设置即可:
如下所示:
1. 声明library名称
###############################
LOCAL_STATIC_JAVA_LIBRARIES := xstream
###############################
2. 加入引入的库文件
###############################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := xstream:xstream-1.3.1.jar
include $(BUILD_MULTI_PREBUILT)
###############################
E. 如何让Android系统或Android应用执行shell脚本
android系统执行shell脚本,需要首先确认用户具有修改shell的权限,使用 process来执行指令,如下代码:
publicvoidexecShell(Stringcmd){
try{
//权限设置
Processp=Runtime.getRuntime().exec("su");//开始执行shell脚本
//获取输出流
OutputStreamoutputStream=p.getOutputStream();
=newDataOutputStream(outputStream);
//将命令写入
dataOutputStream.writeBytes(cmd);
//提交命令
dataOutputStream.flush();
//关闭流操作
dataOutputStream.close();
outputStream.close();
}
catch(Throwablet)
{
t.printStackTrace();
}
}