一:问题描述

    在已经root过的android设备下,app执行一个linux命令,app需要获取su权限,在某些android主板下会出现异常, Command: [su] Working Directory: null Environment: null,代码如下:

private void execLinuxCommand(String cmd){
Runtime runtime = Runtime.getRuntime();
try {
Process localProcess = runtime.exec("su");
OutputStream localOutputStream = localProcess.getOutputStream();
DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream);
localDataOutputStream.writeBytes(cmd);
localDataOutputStream.flush();
} catch (IOException e) {
Logger.i(TAG+"strLine:"+e.getMessage());
e.printStackTrace(); }
}

  由于确认设备已经root,并且上个月测试的时候,没有任何问题,然后今天换新设备测试时(新设备,旧设备android版本一致,均为5.1,并且都已经root),却出现如下异常:

java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null
12-02 10:00:08.685 W/System.err: Caused by: java.io.IOException: Permission denied
12-02 10:00:08.686 W/System.err: at java.lang.ProcessManager.exec(Native Method)
12-02 10:00:08.686 W/System.err: at java.lang.ProcessManager.exec(ProcessManager.java:209)
12-02 10:00:08.687 W/System.err: ... 17 more

通过异常信息判断,Process localProcess = runtime.exec("su");执行这句代码,没有权限,都root了还没权限,我去。。。ls -al  /system/xbin/su信息如下:

二:解决办法

  出现这种问题,一般有三个原因

  1 /system/xbin/su   不存在

root@rk3288:/system/xbin # ls -al su
-rwsr-x--- root shell -- : su

   通过adb命令,看到是有su这个文件的,所以排除这个原因。

2 /system/xbin/su 权限问题,

  

  解决办法是执行如下命令,前提是android主板给予了执行chmod 06755命令的权限

chmod 06755 /system/xbin/su

  如果执行以上命令,出现如下问题,请联系设备厂商

root@rk3288:/system/xbin # chmod  /system/xbin/su
Unable to chmod /system/xbin/su: Read-only file system

  3 /system/xbin/su 不允许第三方应用获取root权限

网上的解决办法是:
root@android:/ $ su
su: uid 10061 not allowed to su
root@android:/

 

  

android 程序执行linux命令注意事项的更多相关文章

  1. Java程序执行Linux命令

    Java程序中要执行linux命令主要依赖2个类:Process和Runtime 首先看一下Process类: ProcessBuilder.start() 和 Runtime.exec 方法创建一个 ...

  2. Java程序执行Linux命令(JSP运行其他程序)

    java程序中要执行linux命令主要依赖2个类:Process和Runtime 首先看一下Process类: ProcessBuilder.start() 和 Runtime.exec 方法创建一个 ...

  3. 使用Android平板编程,执行linux命令

    android有一些应用支持开发, AIDE 介绍http://www.wandoujia.com/apps/com.aide.ui https://play.google.com/store/app ...

  4. Android 如何执行java命令

    android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了 ...

  5. Java 执行linux命令(转)

    转自 http://blog.csdn.net/a19881029/article/details/8063758 java程序中要执行linux命令主要依赖2个类:Process和Runtime 首 ...

  6. php执行linux命令的6个函数

    一般情况下,很少会用php去执行linux命令,不过特殊情况下,你也许会用到这些函数.以前我知道有二个函数可以执行linux命令,一个是exec,一个是shell_exec.其实有很多的,结合手册内容 ...

  7. 利用java实现可远程执行linux命令的小工具

    在linux的脚本中,如果不对机器做其他的处理,不能实现在linux的机器上执行命令.为了解决这个问题,写了个小工具来解决这个问题. 后面的代码是利用java实现的可远程执行linux命令的小工具,代 ...

  8. python执行linux命令的两种方法

    python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: 方法一:使用os模块 1 2 3 shell# python >> import os >> ...

  9. 后台执行linux命令

    /** * * 方法说明:移植执行linux命令 * * @param cmdStr 需要执行的linux命令 * @return 执行命令后的输出(如果是启动一个进程,则可能一直无法返回) * @t ...

随机推荐

  1. C#算法面试题

    1.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复. static void GetArray() { ]; ]; ; i < ; i++) { intArr[i] ...

  2. Python之print字典

    在python 下面一个包含中文字符串的列表(list)或字典,直接使用print会出现以下的结果: >>> adict={'a':'中文'} >>> print ...

  3. Python的__init__.py用法

    python中包的引入,对于大型项目中都会使用到这个功能,把实现不同功能的python文件放在一起,组成不同lib库,然后在其他地方调用. 包,python源文件+__init__.py 模块,pyt ...

  4. python相关资料

    http://blog.jobbole.com/59535/ http://www.nryoung.org/blog/2013/2/28/python-threading/ http://blog.j ...

  5. Python闭包

    1.概述 闭包是在其词法上下文中引用自由变量的函数. >>> def foo(): ... m=3 ... n=5 ... def bar(): ... a=4 ... return ...

  6. C#值参数和引用参数

    一.值参数 未用ref或out修饰符声明的参数为值参数. 使用值参数,通过将实参的值复制到形参的方式,把数据传递到方法.方法被调用时,系统做如下操作. 在栈中为形参分配空间. 复制实参到形参. 值参数 ...

  7. Django 入门案例开发(上)

    Django 入门案例开发(中) http://www.cnblogs.com/focusBI/p/7858267.html Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供 ...

  8. Python之Django环境搭建(MAC+pycharm+Django++postgreSQL)

    Python之Django环境搭建(MAC+pycharm+Django++postgreSQL) 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/7828614. ...

  9. Shell脚本数据备份

  10. 解决阿里云服务器3306端口无法访问的问题(windows server 2008r2)

    3306端口一般是指mysql数据的默认端口.郁闷了几天的问题,远程无法连接服务器上的mysql服务.今天终于得到彻底解决. 首先,你要确保在服务器上安装好Mysql,并能本地启动.修改密码(如不知道 ...