首页 新闻 搜索 专区 学院

判断应用程序是否可以转移到SD卡

0
悬赏园豆:50 [已关闭问题] 关闭于 2012-03-13 16:41

判断一个已经安装的应用程序是否可以移动到SD卡中,是不是在代码中获得Manifest中的installLocation,如果是,那怎么获得呢?

zy__的主页 zy__ | 初学一级 | 园豆:142
提问于:2012-02-29 15:19
< >
分享
所有回答(4)
0

是要看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();
}
artwl | 园豆:16526 (专家六级) | 2012-02-29 15:39

你好,AssetManager类是管理资产类,这个类为访问当前应用程序的资产文件提供了入口。应该不能获得其他apk中的AndroidManifest.xml文件吧?我现在需要的是在自己的程序中判断其他应用程序是否可以转移到SD卡中。急死了。。。。如果知道麻烦再解释一下,谢谢了

支持(0) 反对(0) zy__ | 园豆:142 (初学一级) | 2012-02-29 15:55
0

这篇文章应该对你帮助很大。记得多搜索。

android获取程序详细权限信息

若问 | 园豆:405 (菜鸟二级) | 2012-03-01 10:27
0

已经解决,还是非常感谢你们的

zy__ | 园豆:142 (初学一级) | 2012-03-13 16:40
0

楼主是怎么解决的,碰到同样问题,求指教!

fly pig | 园豆:202 (菜鸟二级) | 2012-06-12 16:18

通过反射得到ApplicationInfo源码中的installlocation这个Field,将你需要判断的appInfo传进去就OK了

支持(0) 反对(0) zy__ | 园豆:142 (初学一级) | 2012-06-12 19:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册