doujiangyoutlao
楼主
3318 主题数
122 回复数
楼主 发表于 2018.07.10 13:45:51 2103 浏览 4 回复 0

adb shell su -c ""

做启动时间自动化脚本的时候,尝尝遇到一些手机要用su提权的问题,但是使用os.system(command)来执行系统命令并不能达到预期的效果。

脚本如下:

<pre name="code" class="python"># -*- coding: utf-8 -*-
import os
os.system("adb shell")
os.system("su")
os.system("am start -W -n com.android.lockscreen2345/.activity.HomeActivity")


运行结果如下:



从运行结果可以看到,脚本只是执行了adb shell,并没有执行su。因为每次执行os.system(command)的时候,都会还原到最初的环境,所以该脚本的命令不是顺序的,而是同一层级的。

因为adb shell后,进入的是android的系统,而android的系统又是linux的,所以可以使用linux的命令来完成该效果:

adb shell su -c "am start -W -n com.android.lockscreen2345/.activity.HomeActivity"


运行效果如下:


由图可以看到,该设备可以用su来获得系统级权限,使用该命令能顺利获得启动时间。

因此脚本只要改成这样就可以了:

# -*- coding: utf-8 -*-
import os
os.system("adb shell su -c 'am start -W -n com.android.lockscreen2345/.activity.HomeActivity'")


回复