六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 957|回复: 0

详解为什么Enyo可以调用webOS中的系统服务

[复制链接]

升级  41.2%

234

主题

234

主题

234

主题

进士

Rank: 4

积分
706
 楼主| 发表于 2013-2-4 02:32:28 | 显示全部楼层 |阅读模式
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();
  • }
  • }

【编辑推荐】
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表