我寫一個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