如何在没有root权限的情况下运行android系统应用程序?

Ngu*_*inh 6 shell android adb

有没有办法在没有root权限的情况下运行android系统应用程序?我可以通过adb执行系统应用程序,例如:

adb shell/system/bin/screencap -p /sdcard/screen.png

在我自己的应用程序中,我想运行一个没有"su"命令的shell命令.有什么办法吗?android如何阻止用户应用程序执行系统应用程序?

小智 7

您应该能够在java代码中运行此命令:

Runtime.getRuntime().exec("screencap -p /sdcard/screen.png");
Run Code Online (Sandbox Code Playgroud)

有一些shell命令可以在没有root的情况下执行.所以你不需要运行"su".我不确定你是否可以执行screencap.当然,您需要获得在应用中写入SD_CARD的权限.

android.permission.WRITE_EXTERNAL_STORAGE
Run Code Online (Sandbox Code Playgroud)

但是为什么你不使用Android API制作截图?有关更多信息,请阅读stackoverflow上的这篇文章:如何以编程方式在Android中截取屏幕截图?

Androids安全模型基于用户ID,就像Linux一样.每个应用程序都有自己的用户ID.所以你的应用程序有一个像1001这样的用户ID.如果允许你的用户运行命令,否则你将收到错误.

编辑:
您需要root来截取屏幕截图或成为系统应用程序.有一个权限READ_FRAME_BUFFER但您只能在系统应用程序时获取它.当应用程序可以获取您设备的屏幕截图时,这是一个安全问题.

我发现这个API http://code.google.com/p/android-screenshot-library/承诺在没有root的情况下截取屏幕截图.我没有测试它.该库启动本机服务,然后为您截取屏幕截图.但是每次手机启动时都必须运行该服务.所以它获得了系统权限.那不太舒服......

结论:没有很好的方法可以从代码中获取没有root的屏幕截图...