android android:minsdkversion="8",Android:从Android代码获取APKs minSdkVersion

你能行的.

对于Android N及更高版本,请使用official API.

对于早期版本,您可以使用this code,这是非常有效和快速的.这里有一个更好的版本(即使getAttributeName返回一个空字符串也能正常工作):

public static int getMinSdkVersion(File apkFile) throws ClassNotFoundException, IllegalAccessException, InstantiationException,

NoSuchMethodException, InvocationTargetException, IOException, XmlPullParserException {

final Class assetManagerClass = Class.forName("android.content.res.AssetManager");

final AssetManager assetManager = (AssetManager) assetManagerClass.newInstance();

final Method addAssetPath = assetManager.getClass().getMethod("addAssetPath", String.class);

final int cookie = (Integer) addAssetPath.invoke(assetManager, apkFile.getAbsolutePath());

final XmlResourceParser parser = assetManager.openXmlResourceParser(cookie, "AndroidManifest.xml");

while (parser.next() != XmlPullParser.END_DOCUMENT)

if (parser.getEventType() == XmlPullParser.START_TAG && parser.getName().equals("uses-sdk"))

for (int i = 0; i < parser.getAttributeCount(); ++i)

if (parser.getAttributeNameResource(i) == android.R.attr.minSdkVersion)//alternative, which works most of the times: "minSdkVersion".equals(parser.getAttributeName(i)))

return parser.getAttributeIntValue(i, -1);

return -1;

}

而且,如果你想要一个全方位的解决方案(可能会占用很多堆内存和时间),你可以使用一个APK解析库,如APKParser.如果你只想要它的基础知识,请考虑我建议的APKParser改进here.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值