从网络应用程序访问智能手机传感器/地址簿今天?

时间:2011-05-22 17:14:02

标签: iphone android mobile cordova

我想让在外部服务器上运行的Web应用程序访问智能手机传感器和地址簿数据。 W3C正在制定一个名为Device API的规范。但是,它尚未完成,并且可能需要相当长的时间,直到浏览器供应商提供工作实现。

但我现在需要这个功能(用于概念验证)。我不关心可移植性,Android就足够了。要求用户首先安装特殊软件也没关系。

我想到了两个解决方案:

  • 自己将API破解到浏览器中。也许我可以使用Phonegap并轻松编写一个浏览器包装器吗?也就是说,使用Phonegap构建一个浏览器,将Phonegap JS API暴露给任意站点(现在不关心安全性)?
  • 编写服务器并在智能手机localhost上运行它。该服务器将通过HTTPS和OAUTH2(例如)提供对资源的访问。然后,Web应用程序可以在其代码中引用此localhost服务器(HACK HACK ..是否存在防止任意站点访问在localhost上运行的服务器的安全机制?)。

建议欢迎。

2 个答案:

答案 0 :(得分:1)

对于android,我相信你可以通过在你自己的轻量级“浏览器”应用程序中包装webview或者为所提供的浏览器构建一个插件来向javascript公开自定义本地功能。正如在这个问题How to develop plugins for the native Android browser中指出的那样,sdk样本中有一个例子。

但是,如果您启用了一个网站来访问我设备的联系人,我会感到很沮丧,并且可能会拒绝在我的设备上安装您的应用程序。

答案 1 :(得分:1)

使用WebView:

http://developer.android.com/reference/android/webkit/WebView.html

  

此类是您可以滚动自己的网络浏览器的基础

     

WebView有几个自定义点,您可以在其中添加自己的行为。这些是:

     

添加JavaScript-to-Java接口   随着   addJavascriptInterface(Object,String)   方法。这允许您绑定Java   对象进入WebView所以他们可以   从网页控制   的JavaScript。

您需要创建一个充当浏览器的应用程序(通过实现自定义WebView)。然后在该应用程序中,为将获取传感器信息的Web视图创建一个java对象。在服务器输出中,编写测试和访问此对象的javascript。