Skip to content

Commit a64d737

Browse files
committed
Add support for max sdk attribute
1 parent 4d6bc7d commit a64d737

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

com.unity.mobile.notifications/Editor/AndroidNotificationPostProcessor.cs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,24 +153,38 @@ internal static void InjectReceivers(string manifestPath, XmlDocument manifestXm
153153
notificationRestartOnBootReceiver.SetAttribute("exported", kAndroidNamespaceURI, "false");
154154
}
155155

156-
internal static void AppendAndroidPermissionField(string manifestPath, XmlDocument xmlDoc, string name)
156+
internal static void AppendAndroidPermissionField(string manifestPath, XmlDocument xmlDoc, string name, string maxSdk = null)
157157
{
158158
var manifestNode = xmlDoc.SelectSingleNode("manifest");
159159
if (manifestNode == null)
160160
throw new ArgumentException(string.Format("Missing 'manifest' node in '{0}'.", manifestPath));
161161

162+
XmlElement metaDataNode = null;
162163
foreach (XmlNode node in manifestNode.ChildNodes)
163164
{
164165
if (!(node is XmlElement) || node.Name != "uses-permission")
165166
continue;
166167

167-
var elementName = ((XmlElement)node).GetAttribute("name", kAndroidNamespaceURI);
168+
var element = (XmlElement)node;
169+
var elementName = element.GetAttribute("name", kAndroidNamespaceURI);
168170
if (elementName == name)
169-
return;
171+
{
172+
if (maxSdk == null)
173+
return;
174+
var maxSdkAttr = element.GetAttribute("maxSdkVersion", kAndroidNamespaceURI);
175+
if (!string.IsNullOrEmpty(maxSdkAttr))
176+
return;
177+
metaDataNode = element;
178+
}
170179
}
171180

172-
XmlElement metaDataNode = xmlDoc.CreateElement("uses-permission");
173-
metaDataNode.SetAttribute("name", kAndroidNamespaceURI, name);
181+
if (metaDataNode == null)
182+
{
183+
metaDataNode = xmlDoc.CreateElement("uses-permission");
184+
metaDataNode.SetAttribute("name", kAndroidNamespaceURI, name);
185+
}
186+
if (maxSdk != null)
187+
metaDataNode.SetAttribute("maxSdkVersion", kAndroidNamespaceURI, maxSdk);
174188

175189
manifestNode.AppendChild(metaDataNode);
176190
}

0 commit comments

Comments
 (0)