2

我正在尝试以下链接中的地理位置示例。

http://docs.phonegap.com/en/1.7.0/cordova_geolocation_geolocation.md.html#Geolocation

我从第一个“完整示例”中复制了全部内容,并将该文件保存为 HTML。当我在 Chrome(桌面)和 Android 手机内置浏览器(默认)中打开它时,我在 chrome 和 android 手机上都收到了以下三个警报。

  1. 差距:[“设备”,“getDeviceInfo”,“XXXXXXXXXX”]
  2. 差距:["NetworkStatus","getConnectionInfo","XXXXXXXXXX"]
  3. 差距:[“应用程序”,“显示”,“XXXXXXXXXX”]

我第一次单击“取消”,甚至尝试“确定”,但没有任何反应。如果我在我的 Android 手机上的所有三个警报上单击“确定”,页面就会变成白色。

所以我用谷歌搜索并在 Stack Overflow 上找到了几个答案,建议:

  • 删除桌面浏览器的 Cordova JS 文件
  • 从 Cordova 添加 android 特定的 JS。

所以我尝试了两种方法,但都没有奏效。最新,我尝试了以下解决方案。

我下载了Cordova package (3.0.0),一个cordova-android.zip在以下路径中有cordova.js文件的文件。

/cordova-android/framework/assets/www/cordova.js

所以,现在我的脚本元素看起来像这样:

<script type="text/javascript" charset="utf-8" src="/cordova-android/framework/assets/www/cordova.js">

<script>如上所述修改元素后,我在 Chrome 中没有收到警报,但我仍然在我的 Android 手机上收到以下新警报。

  1. 差距:[“插件管理器”,“启动”,“插件管理器XXXXXXXXXX”]
  2. 差距:[“应用程序”,“显示”,“XXXXXXXXXX”]
  3. 代码:1,消息:用户拒绝地理位置。

所以,现在我有以下问题:

  1. 我该如何解决这个问题(在所有设备/浏览器上运行 HTML 页面而不发出警报)?
  2. 关于更改 cordova.js 文件后为什么我的警报发生变化的任何想法?

问候, 鲁米特

4

1 回答 1

3

您的问题是您使用cordova.js 就好像它是像jQuery 这样的JS 库,但是Phonegap (Cordova) 是一个混合框架而不是移动浏览器框架(请参阅此处进行说明)。它不打算用作网页中的独立 JS 库,而是与本机 Phonegap 库结合使用以构建本机应用程序。如果您将页面创建为 Phonegap 应用程序并为 Android 构建它,您将能够(并且需要)允许该应用程序使用地理定位的权限。

Phonegap 应用程序是通过本机 WebView 实现的,对于 Geolocation API,如果设备还没有本机 W3C 实现(Android 有),Phonegap 将仅使用其自己的实现。

所以重点是:要么按照平台指南为 Android 创建一个合适的 Phonegap 应用程序,要么根本不使用 Phonegap JS,因为您可以直接从网页中的 Javascript 调用 Android 浏览器的地理定位 API (navigator.geolocation) -你不需要Phonegap的JS文件来允许你这样做(看看这个问题的答案)。

于 2013-10-10T12:18:05.053 回答