getPermissions method
Parses and returns a list of all permissions currently in the manifest.
Implementation
List<ManifestPermissionEntry> getPermissions() {
final permissions = <ManifestPermissionEntry>[];
final range = _getElementScope('manifest');
if (range == null) return permissions;
final comments = <String>[];
var depth = 0;
for (var i = range.start; i <= range.end; i++) {
final event = _events[i];
if (event is XmlCommentEvent) {
comments.add(event.value);
continue;
} else if (event is XmlStartElementEvent) {
if (event.name == 'uses-permission') {
// Only include permissions that are direct children of manifest (depth 0)
if (depth == 0) {
String? nameAttrValue;
for (final attr in event.attributes) {
if (attr.name == 'android:name') {
nameAttrValue = attr.value;
} else if (attr.name == 'tools:node' && attr.value == 'remove') {
nameAttrValue = null;
break;
}
}
if (nameAttrValue != null) {
permissions.add(
ManifestPermissionEntry(
key: nameAttrValue,
comments: List.from(comments),
),
);
}
comments.clear();
}
}
if (!event.isSelfClosing) {
depth++;
}
} else if (event is XmlEndElementEvent) {
depth--;
}
}
return permissions;
}