有没有办法在没有root权限的情况下运行android系统应用程序?我可以如通过ADB执行系统应用:如何在没有root权限的情况下运行android系统应用程序?
adb shell /system/bin/screencap -p /sdcard/screen.png
在我自己的应用程序,我想没有“苏”命令来运行这样的shell命令。有什么办法吗? Android如何防止用户应用程序执行系统应用程序?
有没有办法在没有root权限的情况下运行android系统应用程序?我可以如通过ADB执行系统应用:如何在没有root权限的情况下运行android系统应用程序?
adb shell /system/bin/screencap -p /sdcard/screen.png
在我自己的应用程序,我想没有“苏”命令来运行这样的shell命令。有什么办法吗? Android如何防止用户应用程序执行系统应用程序?
您应该能够运行在Java代码中的命令:
Runtime.getRuntime().exec("screencap -p /sdcard/screen.png");
有一些shell命令,你可以无需根用户身份执行。所以你不需要运行“su”。我不确定你是否可以执行screencap。当然,您需要获得在您的应用中写入SD_CARD的权限。
android.permission.WRITE_EXTERNAL_STORAGE
但是为什么你不使用Android API来制作截图?欲了解更多信息,请阅读这篇文章的计算器:How to programmatically take a screenshot in Android?
Androids安全模型基于用户id,就像Linux一样。每个应用都有自己的用户ID。所以你的应用程序有一个像1001这样的用户标识。如果你的用户被允许运行你的命令,否则你会收到一个错误。
编辑:
你需要root用户截屏或成为系统应用程序。有权限READ_FRAME_BUFFER,但只有当您是系统应用程序时才可以获得该权限。当应用可以截取设备的屏幕截图时,它是一个安全问题。
我发现这个API http://code.google.com/p/android-screenshot-library/它承诺不带根目录的截图。我没有测试它。图书馆启动一个本地服务,然后为您截取屏幕截图。 但是您必须在每次手机启动时运行该服务。所以它获得了系统权限。这不是很舒服......
结论:采取屏幕快照,无需从代码根本没有很好的办法......
Is there any way to run android system app without root permission?
它必须NO,但有些时候,一些功能,这不可公开使用可用。我见过使用java反射的例子。我想,不。
的事情是亚行外壳和用户应用有基于用户和不同的安全级别组ID(UID和GID)。
更多信息:http://android-dls.com/wiki/index.php?title=Android_UIDs_and_GIDs
此外,还有通过应用权限和隐伏&内部类,程序,等它内部使用作出限制。
产品号:关于截图。在Android市场(谷歌播放)有几个应用程序提供没有ROOT访问的屏幕截图。所以,这是可能的。 尽管Android 4.0的屏幕截图可以从“框中”获得。
请注意详细说明哪些应用可以做到这一点?我们可以反编译它们并找出它是如何工作的。 –
AFAIK,没有API来捕捉截图。所以,我尝试通过shell命令执行screencap。但是我无法在没有root权限的情况下执行它。 –
似乎是这样。没有API,你需要root来运行screencap。 我发现这个库http://code.google.com/p/android-screenshot-library/与此,你应该能够没有根用户截图。它安装一个本地服务,通过adb shell启动。所以它有能力截图。 – mcia
我曾尝试过。它不适用于android 3.x和android 4.x,因为framebuffer在那里被破坏了。现在可以接受的方式是通过shell命令调用screencap(在root权限下) –