判断一个已经安装的应用程序是否可以移动到SD卡中,是不是在代码中获得Manifest中的installLocation,如果是,那怎么获得呢?
是要看installLocation的值,参考:让Android应用程序支持安装到SD卡(APP2SD)
获得值参考:
// Experimentally determined
private static final int auto = 0;
private static final int internalOnly = 1;
private static final int preferExternal = 2;
AssetManager am = createPackageContext(packageName, 0).getAssets();
XmlResourceParser xml = am.openXmlResourceParser("AndroidManifest.xml");
int eventType = xml.getEventType();
xmlloop:
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
if (! xml.getName().matches("manifest")) {
break xmlloop;
} else {
attrloop:
for (int j = 0; j < xml.getAttributeCount(); j++) {
if (xml.getAttributeName(j).matches("installLocation")) {
switch (Integer.parseInt(xml.getAttributeValue(j))) {
case auto:
// Do stuff
break;
case internalOnly:
// Do stuff
break;
case preferExternal:
// Do stuff
break;
default:
// Shouldn't happen
// Do stuff
break;
}
break attrloop;
}
}
}
break;
}
eventType = xml.nextToken();
}
你好,AssetManager类是管理资产类,这个类为访问当前应用程序的资产文件提供了入口。应该不能获得其他apk中的AndroidManifest.xml文件吧?我现在需要的是在自己的程序中判断其他应用程序是否可以转移到SD卡中。急死了。。。。如果知道麻烦再解释一下,谢谢了
已经解决,还是非常感谢你们的
楼主是怎么解决的,碰到同样问题,求指教!
通过反射得到ApplicationInfo源码中的installlocation这个Field,将你需要判断的appInfo传进去就OK了