--- /dev/null
+<?php\r
+// Path to the AndroidManifest.xml-file from the Android source. Get it from https://raw.github.com/android/platform_frameworks_base/master/core/res/AndroidManifest.xml for example.\r
+$android_manifest_file_path = 'AndroidManifest.xml';\r
+\r
+// Returns an associative array with android permissions and data about them\r
+function get_android_permissions_array($android_manifest_file_path) {\r
+\r
+ $doc = new DOMDocument;\r
+ $doc->load($android_manifest_file_path);\r
+\r
+ $xpath = new DOMXPath($doc);\r
+\r
+ $description = '';\r
+ \r
+ foreach ($xpath->query('node()') as $node) {\r
+ // Save permissions and permission groups from tags\r
+ if($node->nodeName == 'permission-group' || $node->nodeName == 'permission') {\r
+ $name = $node->attributes->getNamedItem('name')->value;\r
+ $name = substr(strrchr($name,'.'), 1);\r
+ $permissions[$node->nodeName][$name]['description'] = str_replace(array("\r\n", "\r", "\n", "\t", ' '), '', $description);\r
+ \r
+ if($node->nodeName == 'permission') {\r
+ $permissions[$node->nodeName][$name]['permissionGroup'] = substr(strrchr($node->attributes->getNamedItem('permissionGroup')->value,'.'), 1);\r
+ $permissions[$node->nodeName][$name]['protectionLevel'] = $node->attributes->getNamedItem('protectionLevel')->value;\r
+ }\r
+ }\r
+\r
+ // Cache descriptions from comments preceding the tags\r
+ if($node->nodeName == '#comment') {\r
+ $description .= $node->textContent;\r
+ }\r
+ elseif($node->nodeName != '#text') {\r
+ $description = '';\r
+ }\r
+ }\r
+ \r
+ return $permissions;\r
+}\r
+?>
\ No newline at end of file