0

我编写了一个 android 程序 mydhcp 来发送运行 dhcpcd 的命令(android 默认 dhcp 程序):

dhcpcd eth0

我写了一个 apk 来接收 BOOT_COMPLETED 动作。当收到 BOOT_COMPLETED 时,它会调用我的共享库 (JNI) libmydhcp.so 来控制 mydhcp。所有进程都运行成功,但 dhcpcd 启动失败。

在我的 apk 的 AndroidManifest.xml 中已经设置了与系统 uid 相同的 uid:

android:sharedUserId="android.uid.system"

和其他用途 - 许可:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

崩溃点在 main(),它在 external/dhcpcd/dhcpcd.c

pidfd = open(pidfile, O_WRONLY | O_CREAT | O_NONBLOCK, 0664);

如何修改来解决这个问题?或者这是不可能的?

4

1 回答 1

0

根据您上面的评论,以 root 身份运行命令:

public void RunAsRoot(String[] cmds){
        Process p = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(p.getOutputStream());            
        for (String tmpCmd : cmds) {
                os.writeBytes(tmpCmd+"\n");
        }           
        os.writeBytes("exit\n");  
        os.flush();
}
于 2012-07-31T16:55:04.577 回答