2011-05-22 39 views
2

我想讓在外部服務器上運行的Web應用程序能夠訪問智能手機傳感器和地址簿數據。 W3C正在制定一個稱爲設備API的規範。但是,它尚未完成,並且在瀏覽器供應商提供工作實現之前可能需要相當長的一段時間。今天從web應用程序訪問智能手機傳感器/地址簿?

但是我現在需要這個功能(用於概念驗證)。我不關心可移植性,Android就足夠了。要求用戶首先安裝特殊軟件也是可以的。

兩種解決方案來我的腦海:

  • 哈克的API整合到瀏覽器自己。也許我可以採用PhoneGap並輕鬆地使用它來編寫瀏覽器包裝?也就是說,使用Phonegap構建一個將Phonegap JS API公開到任意站點的瀏覽器(現在不關心安全性)?
  • 編寫一個服務器,並在智能手機本地主機上運行它。該服務器將通過HTTPS和OAUTH2提供對資源的訪問(例如)。然後Web應用程序可以在他們的代碼中引用這個本地主機服務器(HACK HACK ..是否有安全機制可以防止任意站點訪問運行在本地主機上的服務器?)。

建議歡迎。

回答

1

使用的WebView:

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

這個類是您可以在其推出自己的網絡瀏覽器

網頁視圖的基礎有幾個定製點,你可以添加你自己的行爲。它們是:

將JavaScript-to-Java接口添加到 與 addJavascriptInterface(Object,String) 方法。這使您可以將Java對象 綁定到WebView中,以便從網頁 JavaScript中控制 。

您需要創建一個充當瀏覽器的應用程序(通過實現自定義WebView)。然後在該應用程序中,爲Web視圖創建一個Java對象,以獲取傳感器信息。在服務器輸出中,編寫測試並訪問此對象的JavaScript。

1

對於android,我相信你可以通過在自己的輕量級「瀏覽器」應用程序中包裝一個webview或爲所提供的瀏覽器構建一個插件來將自定義本地功能公開給javascript。正如在這個問題How to develop plugins for the native Android browser中指出的那樣,在sdk示例中有一個例子。

但是,如果您啓用了網站訪問我的設備的聯繫人,並且可能會拒絕將您的應用程序安裝到我的設備上,我會感到很沮喪。