加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

Android 程序执行Linux命令谨慎事项

发布时间:2021-11-13 11:56:28 所属栏目:教程 来源:互联网
导读:一:问题描述 在已经root过的Android设备下,app执行一个Linux命令,app需要获取su权限,在某些Android主板下会出现异常, Command: [su] Working Directory: null Environment: null,代码如下: private void execLinuxCommand(String cmd){ Runtime runti

一:问题描述
 
   在已经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:/

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读