Enyo1.0提供了五个service,分别是:
system: “palm://com.palm.systemservice/”
telephony: “palm://com.palm.telephony/”
database: “luna://com.palm.db/”
application: “palm://com.palm.applicationManager/”
accounts: “palm://com.palm.service.accounts/”
通过调用这些service,我们可以获取很多与webOS系统相关的信息。那为什么webOS中的JavaScript(Enyo是JS框架)可以直接操作系统信息呢?
一切的秘密就在enyo\1.0\framework\source\palm\services\bridge\WebosConnect.js中。
在这个文件的59行开始,有下面的代码:
可以看出,enyo在页面中插入了一个applet标签,这里加入了webOSconnect_1_3.jar这个jar包,并且将要调用包中的com.palm.webos.connect.DeviceConnection类。
而这个jar包,正是与系统数据直接交互的组件,jar包中没有打入源码,我们也就无法具体的实现了。
其中第二部分:“从JavaScript中访问Java Applet小程序中的方法和变量”详细解释了调用流程。
我把其中的示例代码贴出来:
“mytest.htm”
- function accessApplet()
- { setTimeout("changeText('I like JavaScript!')",1000);
- setTimeout("changeText('I like JavaScript and Java!')",2000);
- setTimeout("changeText('I like Java!')",3000);
- setTimeout("accessApplet()",4000);
- }
- function changeText(s)
- {
- window.document.testText.setText(s)
- //此处调用JavaApplet小程序的setText()方法
- //注意,小程序的名字必须为〈applet〉标志 name属性所标识
- }
- //通过调用accessApplet()装入小程序
“Testtext.java”
- import java.applet.*;
- ……
- public class Testtext extends Applet
- { ……
- public void setText(String s) //setText()必须声明为“public”
- {
- text=s;
- repaint();
- }
- }