向 config.xml 文件添加使用权限后 Ionic 应用程序崩溃

Ionic app crash after adding use permission to config.xml file

通过向 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);

我可以得到相机的权限或者record_audio 但是 MODIDY_AUDIO_SETTINGS 权限的 requestPermission return 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" />

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

里面 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>

unplug/plug 再次 usb 设备或重置 adb 服务器并重新 运行 应用程序

ionic cordova run android --device

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