Android Java代码执行adb shell命令(一) 误区

之前一直有几个误区就是 :

1、能在adb shell中运行的命令都可以用Java代码来执行;

2、只要是Root过的手机就一定能获取su权限;

之所以称之为误区是因为在实际使用过程中发现了走不通的地方,也就是个人在目前还没有找到其他的方案来解决,如果有方案能解决非常欢迎告诉本人;

  • 误区一    能在adb shell中运行的命令都可以用Java代码来执行

当把tcpdump 放入到/system/bin或者是/system/xbin/ 下,通过adb shell 命令下可以执行tcpdump命令用来抓包,后来想在程序用实现抓包的功能就把命令放到了程序中;在执行的过程中发现执行不成功,并提示:tcpdump: no suitable device found;搜索发现是因为没有权限,这就引出了第二个误区;

  • 误区二    只要是Root过的手机就一定能获取su权限

因为通过adb shell中使用su或者直接adb root就可以切换为root用户,所以执行命令畅通无阻,但是在程序使用Java代码来调用su命令却是不成功的;关键点在与su的源码中有如下判断;

    if (myuid != AID_ROOT && myuid != AID_SHELL) {
        fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
        return 1;
    }

当不是root用户和shell用户时是会报错的,因为APP最多只能是系统应用,所以执行时会报错;只是不知道有没有办法改变为root用户;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值