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'")