一:问题描述

    在已经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. linux操作系统基础篇(一)

    1.什么是linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序 ...

  2. Getting Started With setuptools and setup.py

    https://pythonhosted.org/an_example_pypi_project/setuptools.html http://www.ianbicking.org/docs/setu ...

  3. 拼写纠错的利器,BK树算法

    BK树或者称为Burkhard-Keller树,是一种基于树的数据结构,被设计于快速查找近似字符串匹配,比方说拼写纠错,或模糊查找,当搜索”aeek”时能返回”seek”和”peek”. 本文首先剖析 ...

  4. 如何用while循环输出十行十列变色★☆

    输出十行十列星星 k = 0 #设置一个终止变量 while k < 10: i = 0 #设置一个满十换行变量 while i < 10: print('★',end='') i += ...

  5. [拓扑排序]Ordering Tasks UVA - 10305

    拓扑排序模版题型: John has n tasks to do.Unfortunately, the tasks are not independent and the execution of o ...

  6. Maven引入jar的总结

    Overview:显示maven项目的一些基本信息 Dependencies:添加jar包的页面 Plugins:添加maven插件的页面.比如tomcat-maven-plugin等 Reporti ...

  7. 如何优化Cocos2d-X游戏的内存

    在游戏项目优化中都会碰到一个问题,如何既能减少内存又能尽量减少包的大小?在实际项目中有些经验分享一下,事实上2D游戏中最占内存的就是图片资源,一张图片使用不同的纹理格式带来的性能差异巨大,下表是我在I ...

  8. Unity3D获取资源的方法整理:

    在使用Unity3D做项目时,获取资源的方法大致分为两种.一种是通过写代码的方式,在程序运行时,自动获取资源:一种是通过手动拖拽的方式进行获取.不管是什么类型的资源都能通过这两种方式获得,下面拿图片资 ...

  9. 迷宫问题-POJ 3984

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 24348   Accepted: 14206 Descriptio ...

  10. c# AutoMapper 使用方式

    安装方式:使用vs自带的nuget管理工具,搜索AutoMapper ,选择第一个安装到你的项目即可. 我从网上找了一些资料,下载了个demo,然后自己又写了一遍,我把AutoMapper 的使用分为 ...