Android 使用 shell 命令小结

本文介绍了在 Android 应用中执行 shell 命令的方法,包括基础用法、获取返回值、申请 root 权限以及以 root 权限执行有返回值的 shell 命令。详细讲解了如何通过 Runtime.exec() 方法及其变体来执行不同类型的 shell 命令,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

一、背景说明

在 apk 开发过程中,难免遇到需要使用 apk 来执行相应的 shell 命令,本文档就是记录在 apk 内部如何执行 shell 命令。

二、准备知识

在使用 shell 命令之前,我们先了解一下 Android 进程基本信息。

ce

ce

如上图,可以看到当前进程空间内,存在好多进程分别以不同的用户权限在执行。除了常见的系统用户,还有 wifi 用户,nfc 用户等,其中我们比较关注的在于 u0_axxx 。关于此部分解释参考:关于android UID u0_axx是怎么来的

由于在 Android 系统中,单个 APK 都是一个独立的进程,因此,在 apk 内部执行 shell 命令,实际是以当前 apk 所在的进程用户权限去执行对应的命令。到这里就解释了执行命令的权限分配问题。

二、技术说明

1、基础用法

通过调用当前apk的运行时对象来执行 shell 命令:

  • Runtime.getRuntime(). exec( "ls");

运行之后,在进程中会随机创建一个新用户,然后以新用户的方式来执行 shell 命令。

上述代码有个缺点就是执行之后,无法获取返回值。下面进行改进。

2、执行命令获取返回值

上述命令有缺陷,现在进行改进,使其执行后可以获取返回值。

  • public static String runCmd( String shell) {
  • String data =
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值