Android 程序执行Linux命令的解决方法及注意事项

所属分类: 软件编程 / Android 阅读数: 38
收藏 0 赞 0 分享

一:问题描述

    在已经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  67160 2017-10-16 15:01 su

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

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

 

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

chmod 06755 /system/xbin/su

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

root@rk3288:/system/xbin # chmod 06755 /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命令的解决方法及注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持! 

更多精彩内容其他人还在看

Android中加入名片扫描功能实例代码

这篇文章主要介绍了Android中加入名片扫描功能实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信发表说说实现拍照、多图上传功能

这篇文章主要为大家详细介绍了Android仿微信发表说说实现拍照、多图上传功能,使用Retrofit2.0技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

设置Android系统永不锁屏永不休眠的方法

在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧
收藏 0 赞 0 分享

Android Retrofit 2.0框架上传图片解决方案

这篇文章主要介绍了Android Retrofit 2.0框架上传一张与多张图片解决方案,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义等待对话框

这篇文章主要为大家详细介绍了Android自定义等待对话框的实现方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Window添加View的底层原理

这篇文章主要介绍了Android中Window添加View的底层原理,需要的朋友可以参考下
收藏 0 赞 0 分享

Android调用系统默认浏览器访问的方法

这篇文章主要介绍了Android调用系统默认浏览器访问的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

Android程序开发中单选按钮(RadioGroup)的使用详解

在android程序开发中,无论是单选按钮还是多选按钮都非常的常见,接下来通过本文给大家介绍Android程序开发中单选按钮(RadioGroup)的使用,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

这篇文章主要介绍了Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多