Пример #1
0
    private static void ReadManifest(string manifestPath)
    {
#if !(UNITY_WP8 || UNITY_METRO)
        //Read XML file
        _manifestTemplate = new AN_ManifestTemplate();

        XmlDocument doc = new XmlDocument();
        doc.Load(Application.dataPath + manifestPath);
        XmlNode rootNode = doc.DocumentElement;

        foreach (XmlAttribute attr in rootNode.Attributes)
        {
            _manifestTemplate.SetValue(attr.Name, attr.Value);
        }

        foreach (XmlNode childNode in rootNode.ChildNodes)
        {
            if (!childNode.Name.Equals("application") &&
                !childNode.Name.Equals("uses-permission") &&
                !childNode.Name.Equals("#comment"))
            {
                _manifestTemplate.AddProperty(childNode.Name, ParseProperty(childNode));
            }
        }

        XmlNode applicationNode = null;
        foreach (XmlNode childNode in rootNode.ChildNodes)
        {
            if (childNode.Name.Equals("application"))
            {
                applicationNode = childNode;
                break;
            }
        }

        foreach (XmlAttribute attr in applicationNode.Attributes)
        {
            _manifestTemplate.ApplicationTemplate.SetValue(attr.Name, attr.Value);
        }
        foreach (XmlNode childNode in applicationNode.ChildNodes)
        {
            if (!childNode.Name.Equals("#comment") &&
                !childNode.Name.Equals("activity"))
            {
                _manifestTemplate.ApplicationTemplate.AddProperty(childNode.Name, ParseProperty(childNode));
            }
        }

        foreach (XmlNode childNode in applicationNode.ChildNodes)
        {
            if (childNode.Name.Equals("activity") &&
                !childNode.Name.Equals("#comment"))
            {
                string activityName = "";
                if (childNode.Attributes["android:name"] != null)
                {
                    activityName = childNode.Attributes["android:name"].Value;
                }
                else
                {
                    Debug.LogWarning("Android Manifest contains activity tag without android:name attribute.");
                }

                XmlNode launcher   = null;
                bool    isLauncher = false;
                foreach (XmlNode actNode in childNode.ChildNodes)
                {
                    if (actNode.Name.Equals("intent-filter"))
                    {
                        foreach (XmlNode intentNode in actNode.ChildNodes)
                        {
                            if (intentNode.Name.Equals("category"))
                            {
                                if (intentNode.Attributes["android:name"].Value.Equals("android.intent.category.LAUNCHER"))
                                {
                                    isLauncher = true;
                                    launcher   = actNode;
                                }
                            }
                        }
                    }
                }

                AN_ActivityTemplate activity = new AN_ActivityTemplate(isLauncher, activityName);
                foreach (XmlAttribute attr in childNode.Attributes)
                {
                    activity.SetValue(attr.Name, attr.Value);
                }

                foreach (XmlNode actNode in childNode.ChildNodes)
                {
                    if (!actNode.Name.Equals("#comment"))
                    {
                        if (actNode != launcher)
                        {
                            activity.AddProperty(actNode.Name, ParseProperty(actNode));
                        }
                    }
                }

                _manifestTemplate.ApplicationTemplate.AddActivity(activity);
            }
        }

        //Load Manifest Permissions
        foreach (XmlNode node in rootNode.ChildNodes)
        {
            if (node.Name.Equals("uses-permission"))
            {
                AN_PropertyTemplate permission = new AN_PropertyTemplate("uses-permission");
                permission.SetValue("android:name", node.Attributes["android:name"].Value);
                _manifestTemplate.AddPermission(permission);
            }
        }
#endif
    }
Пример #2
0
	private static void ReadManifest(string manifestPath) {

#if !(UNITY_WP8 || UNITY_METRO)
		//Read XML file
		_manifestTemplate = new AN_ManifestTemplate ();
			
		XmlDocument doc = new XmlDocument ();
		doc.Load (Application.dataPath + manifestPath);
		XmlNode rootNode = doc.DocumentElement;
			
		foreach (XmlAttribute attr in rootNode.Attributes) {				
			_manifestTemplate.SetValue(attr.Name, attr.Value);
		}
			
		foreach (XmlNode childNode in rootNode.ChildNodes) {
			if (!childNode.Name.Equals("application")
			    && !childNode.Name.Equals("uses-permission")
			    && !childNode.Name.Equals("#comment")) {
				_manifestTemplate.AddProperty(childNode.Name, ParseProperty(childNode));
			}
		}
			
		XmlNode applicationNode = null;
		foreach (XmlNode childNode in rootNode.ChildNodes) {
			if (childNode.Name.Equals("application")) {
				applicationNode = childNode;
				break;
			}
		}
			
		foreach (XmlAttribute attr in applicationNode.Attributes) {
			_manifestTemplate.ApplicationTemplate.SetValue(attr.Name, attr.Value);
		}
		foreach (XmlNode childNode in applicationNode.ChildNodes) {
			if(!childNode.Name.Equals("#comment")
			   && !childNode.Name.Equals("activity")) {
				_manifestTemplate.ApplicationTemplate.AddProperty(childNode.Name, ParseProperty(childNode));
			}
		}
			
		foreach (XmlNode childNode in applicationNode.ChildNodes) {
			if(childNode.Name.Equals("activity")
			   && !childNode.Name.Equals("#comment")) {

				string activityName = "";
				if(childNode.Attributes["android:name"] != null) {
					activityName = childNode.Attributes["android:name"].Value;
				} else {
					Debug.LogWarning("Android Manifest contains activity tag without android:name attribute.");
				}
					
				XmlNode launcher = null;
				bool isLauncher = false;
				foreach (XmlNode actNode in childNode.ChildNodes) {
					if (actNode.Name.Equals("intent-filter")) {
						foreach (XmlNode intentNode in actNode.ChildNodes) {
							if (intentNode.Name.Equals("category")) {
								if (intentNode.Attributes["android:name"].Value.Equals("android.intent.category.LAUNCHER")) {
									isLauncher = true;
									launcher = actNode;
								}
							}
						}
					}
				}
					
				AN_ActivityTemplate activity = new AN_ActivityTemplate(isLauncher, activityName);
				foreach (XmlAttribute attr in childNode.Attributes) {
					activity.SetValue(attr.Name, attr.Value);
				}

				foreach (XmlNode actNode in childNode.ChildNodes) {
					if (!actNode.Name.Equals("#comment")) {
						if (actNode != launcher) {
							activity.AddProperty(actNode.Name, ParseProperty(actNode));
						}
					}
				}
					
				_manifestTemplate.ApplicationTemplate.AddActivity(activity);
			}
		}
			
		//Load Manifest Permissions
		foreach (XmlNode node in rootNode.ChildNodes) {
			if (node.Name.Equals("uses-permission")) {
				AN_PropertyTemplate permission = new AN_PropertyTemplate("uses-permission");
				permission.SetValue("android:name", node.Attributes["android:name"].Value);
				_manifestTemplate.AddPermission(permission);
			}
		}
#endif

	}