【问题标题】:Can I start an android intent as root?我可以以 root 身份启动 android 意图吗?
【发布时间】:2013-08-31 00:26:17
【问题描述】:

我想使用命令行来启动一个 android 意图(比如在 Gallery 应用中播放视频)。我可以以 root 身份启动 Intent 吗?

我试过了

su -c "am start -a android.intent.action.VIEW -n com.android.gallery3d/.app.MovieActivity -d <some_file>"

它会抛出错误

su: exec failed for am start -a android.intent.action.VIEW -n com.android.gallery3d/.app.MovieActivity -d <some_file> Error:No such file or directory

编辑:

这没问题(在没有 root 权限的情况下播放图库中的视频)。不过,我想以 root 权限运行图库。

am start -a android.intent.action.VIEW -n com.android.gallery3d/.app.MovieActivity -d <some_file>

【问题讨论】:

标签: android android-intent


【解决方案1】:

简单的答案是否定的,您不能以 root 身份启动任何 Android 应用程序或意图,即使您从终端以 root 身份启动它们也是如此。这是由于 Android 系统的设计方式:即使您使用su 启动应用程序,实际启动应用程序的进程也会将应用程序分叉到非特权线程中。在大多数情况下,su 二进制文件旨在从已以非 root 访问权限启动的应用程序中以编程方式启动;否则,su 二进制文件用于运行本机 Linux 程序/命令,而不是 Android 应用程序。

让 Android 应用程序在本机拥有“root”访问权限的唯一方法是安装一个内核,该内核自动授予对每个进程的 root 访问权限(我见过一些廉价的无名牌设备开箱即用) .这通常是一个非常糟糕的主意,因为很容易意外损坏设备。

真正的问题是您为什么要首先这样做。如果您确实需要让画廊访问特权文件夹,请考虑安装 busybox 并将受保护的目录作为公共目录安装在某处。这将要求您有一个根设备。

【讨论】:

    【解决方案2】:

    您的问题似乎有几个问题。

    首先,你真正的需求是什么?

    1. Send an intent as root (root sends the intent)
    2. Start an activity as root (gallery runs as root)
    

    关于你遇到的问题。

    1. 以 root 身份发送和意图非常简单,您也尝试过。您可以 su 成为 root,然后使用 'am start xxx' 应该可以。我猜你的 'su -c "am start xxx"' 失败的原因是环境问题。您可以尝试执行以下操作:

    mProcess = new ProcessBuilder()
                        .command("/system/xbin/su")
                        .redirectErrorStream(true).start();
    OutputStream out = mProcess.getOutputStream();
    String cmd = "am start am start -a android.intent.action.VIEW "
                    "-n com.android.gallery3d/.app.MovieActivity "
                    "-d <some_file> \n";
    out.write(cmd.getBytes());
    

    2.以 root 用户身份运行图库将无法运行,图库应用程序不会以 root 身份运行。这是系统限制,除非你修改框架(zygote 进程)。

    我猜你的目标是播放一些像画廊这样的普通应用程序无法访问的视频?您可以尝试其他方法,例如临时更改文件的权限,而不是尝试以 root 身份运行图库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-23
      • 2014-10-12
      • 2015-06-18
      • 2013-10-14
      • 2012-02-04
      • 2017-01-26
      • 2015-04-29
      • 1970-01-01
      相关资源
      最近更新 更多