请教android runtime.execgetRuntime.exec 执行命令 权限问题

--旗下,中国最好的系统开发学习平台!
热门推荐:
当前位置: >
Android: 通过Runtime.getRuntime().exec调用底层Linux下的程序或脚本
发布时间: 10:03 | 作者:采集侠 | 来源:网络整理 | 浏览:
Android Runtime使得直接调用底层Linux下的可执行程序或脚本成为可能
比如Linux下写个测试工具,直接编译后apk中通过Runtime来调用
或者写个脚本,apk中直接调用,省去中间层或者JNI
这个至少效率应该比较高吧
public class test extends Activity {
&&& /** Called when the activity is first created. */
&&& @Override
&&& public void onCreate(Bundle savedInstanceState) {
&&&&&&& super.onCreate(savedInstanceState);
&&&&&&& setContentView(R.layout.main);
&&&&&&& text = (TextView) findViewById(R.id.text);
&&&&&&& Button btn_ls = (Button) findViewById(R.id.btn_ls);
&&&&&&& btn_ls.setOnClickListener(new OnClickListener() {
&& public void onClick(View v) {&&&
&&& do_exec(&ls /mnt/sdcard&);
&& }&&&&&&&&
&&&&&&& });
&&&&&&& Button btn_cat = (Button) findViewById(R.id.btn_cat);
&&&&&&& btn_cat.setOnClickListener(new OnClickListener() {
&& public void onClick(View v) {&&&
&&& do_exec(&cat /proc/version&);
&& }&&&&&&&&
&&&&&&& });&&&&&&&
&&&&&&& Button btn_rm = (Button) findViewById(R.id.btn_rm);
&&&&&&& btn_rm.setOnClickListener(new OnClickListener() {
&& public void onClick(View v) {&&&
&&& do_exec(&rm /mnt/sdcard/1.jpg&);
&& }&&&&&&&&
&&&&&&& });&&&
&&&&&&& Button btn_sh = (Button) findViewById(R.id.btn_sh);
&&&&&&& btn_sh.setOnClickListener(new OnClickListener() {
&& public void onClick(View v) {&&&
&&& do_exec(&/system/bin/sh /mnt/sdcard/test.sh 123&);
&& }&&&&&&&&
&&&&&&& });&&&&&&&&
&&& String do_exec(String cmd) {
&&&& String s = &/n&;
&&&& try {
&& Process p = Runtime.getRuntime().exec(cmd);
&& BufferedReader in = new BufferedReader(
&&&&&&& new InputStreamReader(p.getInputStream()));
&& String line =
&& while ((line = in.readLine()) != null) {
&&& s += line + &/n&;&&&
& } catch (IOException e) {
&& // TODO Auto-generated catch block
&& e.printStackTrace();
&&&& text.setText(s);
echo test.sh
1. exec不等于console命令
2. exec的输入输出流需要自己处理
3. exec执行时阻塞、非阻塞,返回结果问题
4. 注意权限问题&Windows下调用程序
Process proc =Runtime.getRuntime().exec("exefile");
Linux下调用程序就要改成下面的格式
Process proc =Runtime.getRuntime().exec("./exefile");
Windows下调用系统命令
String [] cmd={"cmd","/C","dir"}; Process proc =Runtime.getRuntime().exec(cmd);
Linux下调用系统命令就要改成下面的格式
String [] cmd={"/bin/sh","-c","ln -s exe1 exe2"}; Process proc =Runtime.getRuntime().exec(cmd);
Windows下调用系统命令并弹出命令行窗口
String [] cmd={"cmd","/C","start copy exe1 exe2"}; Process proc =Runtime.getRuntime().exec(cmd);
Linux下调用系统命令并弹出终端窗口就要改成下面的格式
String [] cmd={"/bin/sh","-c","xterm -e ln -s exe1 exe2"}; Process proc =Runtime.getRuntime().exec(cmd);
还有要设置调用程序的工作目录就要
Process proc =Runtime.getRuntime().exec("exeflie",null, new File("workpath"))ProcessBuilder ;同理:ProcessBuilder也可以这么使用管道 ,使用 |&&& ProcessBuilder builder = new ProcessBuilder("/bin/sh","-c","ps aux |grep java");<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&}

我要回帖

更多关于 getruntime.exec 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信