向 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
现在,应用程序在发送权限请求时显示弹出窗口。
通过向 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
现在,应用程序在发送权限请求时显示弹出窗口。