我写一个Android程序mydhcp送其上运行的dhcpcd命令(默认的Android程序DHCP):APK是否可以发送命令通过JNI运行dhcpcd?
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"/>
崩溃点是主要的() ,它是在外部/ dhcpcd/dhcpcd.c
pidfd = open(pidfile, O_WRONLY | O_CREAT | O_NONBLOCK, 0664);
如何修改以解决此问题?或者这是不可能的?
是否有通过设备上的外壳来执行这些操作的方法吗?因为那时你可以执行从应用程序到shell的命令 – sbrichards 2012-07-31 06:15:40
是的! mydhcp可以在shell中运行。这个pid文件是/data/misc/dhcp/dhcpcd-eth0.pid。我猜它不能执行的原因是这个目录用户/组是'dhcp'而不是'系统'。因为,当我将此目录用户/组更改为'系统'时它可以工作。但是现在我不想将用户/组更改为'system',可以让我的apk获得dhcp的uid吗? – Tony 2012-07-31 07:23:05