java xml node_Java AXmlNode.getChildren方法代码示例

import soot.jimple.infoflow.android.axml.AXmlNode; //导入方法依赖的package包/类

/**

* Get the name of the main activity in the AndroidManifest.xml file

* @param apkFileLocation

* @return

*/

public static String getMainActivityName(String apkFileLocation) {

String mainActivityName = null;

try {

ProcessManifest pm = new ProcessManifest(apkFileLocation);

AXmlHandler axmlh = pm.getAXml();

// Find main activity and remove main intent-filter

List anodes = axmlh.getNodesWithTag("activity");

for (AXmlNode an: anodes) {

boolean hasMain = false;

boolean hasLauncher = false;

AXmlNode filter = null;

AXmlAttribute aname = an.getAttribute("name");

String aval = (String)aname.getValue();

System.out.println("activity: "+ aval);

for (AXmlNode ch : an.getChildren()) {

System.out.println("children: "+ ch);

}

List fnodes = an.getChildrenWithTag("intent-filter");

for (AXmlNode fn: fnodes) {

hasMain = false;

hasLauncher = false;

// check action

List acnodes = fn.getChildrenWithTag("action");

for (AXmlNode acn: acnodes) {

AXmlAttribute acname = acn.getAttribute("name");

String acval = (String)acname.getValue();

System.out.println("action: "+ acval);

if (acval.equals("android.intent.action.MAIN")) {

hasMain = true;

}

}

// check category

List catnodes = fn.getChildrenWithTag("category");

for (AXmlNode catn: catnodes) {

AXmlAttribute catname = catn.getAttribute("name");

String catval = (String)catname.getValue();

System.out.println("category: "+ catval);

if (catval.equals("android.intent.category.LAUNCHER")) {

hasLauncher = true;

filter = fn;

}

}

if (hasLauncher && hasMain) {

break;

}

}

if (hasLauncher && hasMain) {

// replace name with the activity waiting for the connection to the PDP

System.out.println("main activity is: "+ aval);

System.out.println("excluding filter: "+ filter);

filter.exclude();

mainActivityName = aval;

break;

}

}

} catch (IOException | XmlPullParserException ex) {

System.err.println("Could not read Android manifest file: " + ex.getMessage());

throw new RuntimeException(ex);

}

return mainActivityName;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值