package io.nexilis.util; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class XmlParser { public static void main(String[] args) { try { Path file = Paths.get("./libs/AndroidManifest.xml"); System.out.println(getMainActivity(Files.newInputStream(file.toFile().toPath()))); } catch (Exception e) { e.printStackTrace(); } } public static String getMainActivity(InputStream inputStream) throws ParserConfigurationException, IOException, SAXException { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(inputStream); doc.getDocumentElement().normalize(); NodeList activity = doc.getElementsByTagName("activity"); String main = ""; p: for (int i = 0; i < activity.getLength(); i++) { Element element = (Element) activity.item(i); NodeList intent = element.getElementsByTagName("intent-filter"); for (int j = 0; j < intent.getLength(); j++) { Element element1 = (Element) intent.item(j); NodeList action = element1.getElementsByTagName("action"); for (int k = 0; k < action.getLength(); k++) { Element element2 = (Element) action.item(k); if (element2.getAttribute("android:name").equals("android.intent.action.MAIN")) { main = element.getAttribute("android:name"); break p; } } } } String[] tmp = main.split("\\."); return tmp[tmp.length - 1]; } }