gpt4 book ai didi

java - 为什么 getRuntime().exec ("/system/bin/am") 总是返回 "Operation not permitted"?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:23 26 4
gpt4 key购买 nike

我的针对 Android 5.0 的 Android 应用程序包含如下代码:

try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("/system/bin/am switch-user 0");
proc.waitFor();
proc.destroy();
}
catch (Exception e)
{}

上面最简单的代码总是返回 1 of proc.exitValue,这意味着Operation not permitted

但是,我通过adb shell检查了/system/bin/am switch-user 0的权限,显示如下:

shell@hammerhead:/system/bin $ ll am
ll am
-rwxr-xr-x root shell 210 2015-03-23 15:10 am

显然,权限表明任何用户都可以执行am

更奇怪的是:我可以从adb shell(在无根模式下)成功调用am

我还尝试在 root 模式下禁用 SELinux。测试表明setenforce 0对Android 5.0没有影响,即SELinux在Android 5.0上强制执行。我可以毫无错误地调用 setenforce 0,但是 sestatus 仍然显示“SELinux Enabled”。

根本原因是什么?

最佳答案

我在Android L模拟器上做了一些测试,如果你执行/system/bin/am,它返回0;如果你执行 /system/bin/am switch-user 0,它返回 1。

这意味着你确实有执行am的权限,但是没有权限执行命令am switch-user 0应用程序。

关于java - 为什么 getRuntime().exec ("/system/bin/am") 总是返回 "Operation not permitted"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29509826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com