我正在开发Java GUI,我正在尝试制作一个按钮,可以使用给定的电话号码开始FaceTime通话。这是 java 代码的简化版本。
String cellNum = "18001234567";
try {
Runtime.getRuntime().exec("open /Users/faris/Desktop/call.app --args " + cellNum);
} catch (IOException e) {
e.printStackTrace();
}
在研究了如何做到这一点之后,我复制了我在网上找到的AppleScript应用程序的一部分,我将其命名为 call.app 并对其进行了修改,以便它接受输入参数电话号码,而不是手动将其输入到脚本中。我已经使用输入的实际电话号码而不是输入变量运行该程序,并且它工作正常,因此我知道问题在于传递参数。
call.app
on run args
set input to first item of args
open location "tel://" & input & "?audio=yes"
delay 1
tell application "System Events"
key code 36
end tell
end run
这是我每次从AppleScript收到的错误。
Can’t get item 1. (-1728)
我以前从未使用过AppleScript,所以目前我完全迷失了。在SO的任何地方都没有找到类似的东西。任何建议将不胜感激。
原因:
苹果脚本中的Error -1728
是"Can't get «script»"
,表示first item of args
是脚本对象引用。 这意味着命令行参数不会传递给 AppleScript 的run
处理程序。
溶液:
与其将 AppleScript 另存为小程序,不如将其另存(导出(为.scpt
或.applescript
文件。 然后用exec(...)
Java 命令替换:
exec("osascript /path/to/applescript " + cellNum);