【问题标题】:Ionic app crash after adding use permission to config.xml file向 config.xml 文件添加使用权限后 Ionic 应用程序崩溃
【发布时间】:2020-02-14 15:11:52
【问题描述】:

通过向config.xml添加MODIFY_AUDIO_SETTINGS权限,我的应用运行后会崩溃。

<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/uses-permission" xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
</edit-config>

然后运行应用程序:

 ionic cordova run android -- device

我也尝试了 ionic android 权限

 import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';

 this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
  result =>console.log('Haspermission?',result.hasPermission),
  err =>this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA)
);

但没有弹出显示请求用户许可。 最后我直接使用了cordova权限

ionic cordova plugin add cordova-plugin-android-permissions

declare var cordova:any
var permissions = cordova.plugins.permissions;
permissions.requestPermission(permissions.RECORD_AUDIO, successCallback, errorCallback);

我可以得到camera或record_audio的许可 但是对于 MODIDY_AUDIO_SETTINGS 权限,requestPermission 返回 false。

permissions.requestPermission(permission.MODIDY_AUDIO_SETTINGS, success, error);

function error() {
    resolve(false);
}

function success(status) {
  if (status.hasPermission) {  // <-- status.hasPermission is false here
     resolve(true);
  } else {
    resolve(false);
  }
}

90% 解决=========================>

手动向 AndroidManifest.xml 添加权限后。 应用程序显示弹出窗口现在询问许可。 如何将此权限添加到 confix.xml 而不是直接添加到 AndroidManifest.xml? 正如我在向 config.xml 添加此权限时所说的那样。应用程序无法启动。

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

【问题讨论】:

  • 能否提供错误输出?
  • 对不起,没有错误。它在 status.hasPermission 上返回 false
  • 直接向AndroidManifest.xml添加权限解决了这个问题。但是如何给 config.xml 添加权限呢?
  • 返回cordova文档,检查一下..

标签: cordova ionic-framework webrtc android-permissions getusermedia


【解决方案1】:

通过向标签添加权限解决了这个问题。

config.xml 内:

<platform name="android">
    ....
    <config-file parent="/manifest" target="AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-feature android:name="android.hardware.camera" android:required="true" />
        <uses-feature android:name="android.hardware.microphone" android:required="true" />
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    </config-file>
    ....
</platform>

再次拔出/插入usb设备或重置adb服务器并重新运行应用程序

ionic cordova run android --device

现在,应用程序在发送权限请求时显示弹出窗口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多