为什么无法运行程序命令错误2

时间:2018-08-28 09:10:55

标签: android

我想从用户那里获得SSID,Wifi密码, 在Android Things上连接适用的WiFi

我引用了Connecting Raspberry Pi running Android Things to wifi

第一个我的wifi连接命令

adb shell am startservice \
-n com.google.wifisetup/.WifiSetupService \
-a WifiSetupService.Connect \
-e ssid <Network_SSID> \
-e passphrase <Network_Passcode>

在亚行上

首先我在终端上写这个命令 这是成功的工作。

但无法在源代码上工作。

try {
    String[] command = {"am startservice -n com.google.wifisetup/.WifiSetupService -a WifiSetupService.Connect -e ssid AndroidHotspot7899 -e passphrase 1111"};
    Process connProcess = Runtime.getRuntime().exec(command);
} catch (IOException e) {
    e.printStackTrace();
}

错误日志

 W/System.err: java.io.IOException: Cannot run program "am startservice -n com.google.wifisetup/.WifiSetupService -a WifiSetupService.Connect -e ssid AndroidHotspot7899 -e passphrase 78994245": error=2, No such file or directory
 W/System.err:     at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
 W/System.err:     at java.lang.Runtime.exec(Runtime.java:692)
    at java.lang.Runtime.exec(Runtime.java:560)
 W/System.err:     at com.example.hyunwook.connect.MainActivity.lambda$onCreate$1$MainActivity(MainActivity.java:72)
 W/System.err:     at com.example.hyunwook.connect.MainActivity$$Lambda$1.onClick(Unknown Source:21)
 W/System.err:     at android.view.View.performClick(View.java:6294)
    at android.view.View$PerformClick.run(View.java:24770)
 W/System.err:     at android.os.Handler.handleCallback(Handler.java:790)
 W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
 W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6494)
 W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
 W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 W/System.err: Caused by: java.io.IOException: error=2, No such file or directory
 W/System.err:     at java.lang.UNIXProcess.forkAndExec(Native Method)
 W/System.err:     at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
 W/System.err:     at java.lang.ProcessImpl.start(ProcessImpl.java:128)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

也许,在lambda表达式中使用它是否有问题?

1 个答案:

答案 0 :(得分:1)

问题在于此应用程序的$ PATH中没有am,因此,当您尝试运行它时,它会失败。

您为什么仍要这样做?如果您知道服务的名称,请通过意图启动它。这就是您应该在Android中启动服务的方式。我想不出任何正当理由,您都应该在应用程序内部使用命令。