android - 为什么不能运行程序命令error2
问题描述
我想从用户那里获取 SSID、Wifi 密码,在 Android Things 上连接适用的 WiFi
我参考了将运行 Android Things 的 Raspberry Pi 连接到 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 表达式中使用它有问题吗?
解决方案
问题是 am 不在此应用程序的 $PATH 中,因此当您尝试运行它时它会失败。
你为什么要这样做?如果您知道服务的名称,请通过意图启动它。这就是您应该在 Android 中启动服务的方式。我想不出您应该使用命令进入应用程序的任何正当理由。
推荐阅读
- css - Devextreme DataGrid 覆盖样式 - 删除单元格填充
- kotlin - 令牌值 744 处的意外字符 0x645
- angularjs - 将 AngularJS 迁移到 Angular 8
- python - 直接在 contextvars.Context 中设置 var
- powershell - 选择 Visio 绘图的所有元素
- android - 将 Google Drive 文件解析为自定义对象
- swift - 在 SwiftUI/Combine 中,两个 ObservableObjects 怎么协调?
- android - 在 Flutter 中修补 Android 安全提供程序
- jquery - 在下拉列表中选择后附加多个 PartialViews
- excel-formula - excel中的范围参考