【问题标题】:Phonegap Error - "Cannot read property 'capture' of undefined" on AndroidPhonegap 错误 - Android 上的“无法读取未定义的属性‘捕获’”
【发布时间】:2012-01-29 06:18:48
【问题描述】:

尝试使用 PhoneGap 创建一个入门应用。我被困在这条线上:

navigator.device.capture.captureAudio(onSuccess, onError, {limits:1, duration:5});

它在 iOS 上运行良好,但在 Android 模拟器上抛出此错误:

无法读取未定义的属性“捕获”

这里是 navigator 对象,发生错误时(注意没有导致此错误的 device 属性)

{
    "language": "en-US",
    "product": "Gecko",
    "mimeTypes": {
        "length": 0
    },
    "appVersion": "5.0 (Linux; U; Android 4.0.3; en-us; sdk Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
    "plugins": {
        "length": 0
    },
    "onLine": true,
    "connection": {
        "type": 0
    },
    "platform": "Linux armv7l",
    "vendor": "Google Inc.",
    "appCodeName": "Mozilla",
    "geolocation": {},
    "cookieEnabled": true,
    "appName": "Netscape",
    "productSub": "20030107",
    "userAgent": "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; sdk Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
    "vendorSub": ""
}

这是 Phonegap.js 加载后的 PhoneGap 对象(注意它是 device: true

{
    "commandQueue": [],
    "commandQueueFlushing": false,
    "_constructors": [
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    "documentEventHandler": {},
    "windowEventHandler": {},
    "resources": {
        "base": true,
        "debugconsole": true,
        "position": true,
        "acceleration": true,
        "accelerometer": true,
        "battery": true,
        "camera": true,
        "device": true,
        "capture": true,
        "contact": true,
        "file": true,
        "filetransfer": true,
        "geolocation": true,
        "compass": true,
        "media": true,
        "notification": true,
        "orientation": true,
        "sms": true,
        "telephony": true,
        "network": true,
        "splashscreen": true
    },
    "available": false,
    "sessionKey": 0,
    "callbackId": 0,
    "callbacks": {},
    "callbackStatus": {
        "NO_RESULT": 0,
        "OK": 1,
        "CLASS_NOT_FOUND_EXCEPTION": 2,
        "ILLEGAL_ACCESS_EXCEPTION": 3,
        "INSTANTIATION_EXCEPTION": 4,
        "MALFORMED_URL_EXCEPTION": 5,
        "IO_EXCEPTION": 6,
        "INVALID_ACTION": 7,
        "JSON_EXCEPTION": 8,
        "ERROR": 9
    },
    "mediaObjects": {}
}

任何想法如何克服这个问题?

【问题讨论】:

  • 您能否指向PhoneGap API 中描述navigator.device 对象以及PhoneGap 如何增强它的页面...?
  • 我是here
  • 音频捕捉功能是否应该在模拟器上可用?在设备上测试,看看是否得到相同的结果
  • 没有文档另有说明。模拟器中有一个语音记录器应用程序可以运行,所以我想除了 PhoneGap 的缺点之外,没有什么可以在技术上阻止它。

标签: javascript android cordova javascript-framework


【解决方案1】:

www 目录中的 phonegap.js 文件名是否与 index.html 引用匹配?将 phonegap.js 更改为 phonegap-1.3.0.js 后,the API docs 的完整示例将在我的 HTC evo 上运行

【讨论】:

  • 是的。此外,它适用于 iOS(iOS 和 Android 版本之间没有代码更改)。
  • 也许您应该发布一个演示问题的 html 文件
  • 您可以以他们的 hello world 为例,复制这一行以触发按钮单击,您会看到问题。
【解决方案2】:

好的,这是我偶然发现的最糟糕的解决方案!

Android 的 JS 与 iOS 的 不同。尽管这些文件的名称相同 - phonegap-x.x.x.js。毫无疑问,其他所有移动平台都会有所不同。

我知道你需要为不同的平台有不同的 JS,但是在某个地方提一下怎么样?

一旦我从 Android 文件夹中拖出 JS,一切就都到位了。

感谢这个问题的回答:deviceready won't fire in Phonegap 1.0.0 on Android

【讨论】:

  • 我只是浪费了 30 分钟的生命,然后发现了这篇文章。多么愚蠢:) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-12-25
  • 2023-03-31
  • 2019-02-26
  • 2015-01-06
  • 2017-07-26
  • 2021-11-24
相关资源
最近更新 更多