0

我需要通过简单地将可执行文件添加到android项目并构建.apk来在我的应用程序中执行一个C程序。然后我尝试在我的应用程序中执行程序,如下所示:

    Process result = Runtime.getRuntime().exec("su");
    String cmd = "PROGRAM_NAME";

    DataOutputStream dos = new DataOutputStream(result.getOutputStream());
    DataInputStreamdis = new DataInputStream(result.getInputStream());

    dos.writeBytes(cmd + "\n");
    dos.writeBytes("exit\n");
    dos.flush();

我知道我需要 root 访问权限才能执行此操作,因此我安装了 Superuser.apk 但这不起作用。还有另一种可能的方法吗?顺便说一句,代码没有完全扩展它应该只看一下程序的执行方式我正在使用 Android 4.2.1 运行模拟器

编辑:首先检查root权限

         Process suProcess = Runtime.getRuntime().exec("su");

         DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
         DataInputStream osRes = new DataInputStream(suProcess.getInputStream());

         if (null != os && null != osRes) {
             os.writeBytes("id\n");
             os.flush();
             String currUid = osRes.readLine();
             boolean exitSu = false;
             if (null == currUid) {
                 Log.d("ROOT", "Can't get root access or denied by user");
            }
4

1 回答 1

0

我和你有同样的问题。您可以在这里找到很多答案,但是它们太旧并且不再起作用(在新的 sdk 中)。

我在这里找到了最好的答案,它说Android 的安全提示不允许任何开发人员拥有 root 访问权限:

 A central design point of the Android security architecture is that no application, by default,
 has permission to perform any operations that would adversely impact other applications, the 
operating system, or the user. This includes reading or writing the user's private data (such as 
contacts or e-mails), reading or writing another application's files, performing network access, 
keeping the device awake, etc.

因此,您在应用层下拥有的唯一访问权限是权限。

于 2014-04-22T22:02:30.933 回答