【问题标题】:(Ionic/Cordova) PermissionDeniedError for getUserMedia(Ionic/Cordova) getUserMedia 的 PermissionDeniedError
【发布时间】:2016-09-22 13:53:19
【问题描述】:

所以我正在开发一个使用 WebRTC 的应用程序,我正处于想用头撞桌子的地步。我在使用 getUserMedia 时遇到问题,当我在手机 (Android 6.0.1) 上运行它时,它总是返回 PermissionDeniedError

应用在 AndroidManifest.xml 中设置了这些权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

该应用确实在运行时请求存储、摄像头和语音权限,我已经安装了 cordova-diagnostic-plugin,它可以验证该应用具有这些权限。

我还尝试按照某人的建议设置以下 HTML 标头:

<meta http-equiv="Content-Security-Policy" content="media-src: 'self' mediastream: blob:;">

我正在运行 Cordova 6.3.1Ionic 2.0.0。 (我还按照 cordova-diagnostic-plugin 的要求安装了 Android Support Repository 38 和 Support Library 23.2.1)。

作为参考,我使用的 getUserMedia 代码是:

if (navigator.webkitGetUserMedia) {
    navigator.webkitGetUserMedia({audio: true, video: true}, gotUserMedia, reject);
}

Android 目标 SDK 版本设置为 23(适用于 Android 6)。

有没有人有任何可以提供帮助的想法?谢谢。

【问题讨论】:

  • 如果您使用“6.0.1”,我认为您需要从设置中手动启用存储权限。

标签: javascript android cordova ionic-framework webrtc


【解决方案1】:

好的,危机避免了。原来是我的错,我在 ionic 上使用 --livereload 运行应用程序(以获取控制台输出),它通过 getUserMedia 不喜欢 xD 的非 ssl 本地服务器运行它

我通过“ionic build android”构建了应用程序并在我的手机上手动安装了它,现在可以正常工作了:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-10
    • 2020-08-29
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多