addPermissionInManifest function
Future<void>
addPermissionInManifest(
{ - required String permissionName,
})
Implementation
Future<void> addPermissionInManifest({required String permissionName}) async {
if (permissionName.isEmpty) return;
final file = File('android/app/src/main/AndroidManifest.xml');
final document = XmlDocument.parse(await file.readAsString());
final manifest = document.getElement('manifest');
final permissions = document.findAllElements('uses-permission');
bool exists = permissions.any((node) => node.getAttribute('android:name') == permissionName);
if (!exists) {
final builder = XmlBuilder();
builder.element('uses-permission', nest: () {
builder.attribute('android:name', permissionName);
});
final newPermission = builder.buildFragment().children.first.copy();
final applicationNode = manifest?.getElement('application');
if (applicationNode != null) {
final index = manifest!.children.indexOf(applicationNode);
manifest.children.insert(index, newPermission);
} else {
manifest?.children.add(newPermission);
}
await file.writeAsString(document.toXmlString(pretty: true));
}
}