Android 为什么不能运行程序命令error2

Android 为什么不能运行程序命令error2,android,Android,我想从用户那里获取SSID和Wifi密码, 在Android上连接适用的WiFi 我参考 首先是我的wifi连接命令 adb shell am startservice \ -n com.google.wifisetup/.WifiSetupService \ -a WifiSetupService.Connect \ -e ssid <Network_SSID> \ -e passphrase <Network_Passcode> 错误日志 W/System.err

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

我参考

首先是我的wifi连接命令

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

 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)
W/System.err:java.io.IOException:无法运行程序“am startservice-n com.google.wifisetup/.WifiSetupService-a WifiSetupService.Connect-e ssid androidhospot7899-e passphrase 78994245”:错误=2,没有这样的文件或目录
W/System.err:at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
W/System.err:at java.lang.Runtime.exec(Runtime.java:692)
位于java.lang.Runtime.exec(Runtime.java:560)
W/System.err:at com.example.hyunbook.connect.MainActivity.lambda$onCreate$1$MainActivity(MainActivity.java:72)
W/System.err:at com.example.hyunbook.connect.MainActivity$$Lambda$1.onClick(未知来源:21)
W/System.err:at-android.view.view.performClick(view.java:6294)
在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)
位于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(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
W/System.err:com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
W/System.err:原因:java.io.IOException:error=2,没有这样的文件或目录
W/System.err:at java.lang.UNIXProcess.forkAndExec(本机方法)
W/System.err:at java.lang.UNIXProcess.(UNIXProcess.java:133)
W/System.err:at java.lang.ProcessImpl.start(ProcessImpl.java:128)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

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

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


你为什么要这么做?如果您知道服务的名称,请通过intent启动它。这就是你在安卓系统中启动服务的方式。我想不出任何有效的理由,你应该在应用程序内使用命令调幅。

因为,我希望在应用程序内,从用户处获取ssid和wifi密码,以便在不访问默认Wi-Fi设置窗口的情况下连接到Wi-Fi。如果你可以通过调幅命令行来实现这一点,那么你也可以通过带参数的intent来实现。am所要做的就是创建一个意图并将其发送到该服务。你不应该在应用程序中使用am。在应用程序中,不要使用
am
命令,如何使用wifi连接?
 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)