- 浏览: 351565 次
- 性别:
- 来自: 北京
最新评论
-
sxchao2008:
心雨心 写道你说的不好用是?你好,在静默卸载系统级别app的时 ...
静默卸载系统软件和第三方软件 -
zhao1111:
请问楼主哪里提供地震的xml文件啊
android解析xml文件 Android DOM解析XML之全球实时地震信息列表 -
yuanmouren1hao:
java字节流(读写文件) -
haiyangzhy:
很好。
ScrollView中嵌入ListView办法 -
gisdaniel:
[/url][url][fla ...
Android中的XML解析-DOM的使用与开发技巧
网上关于"获取未安装的APK图标"的文章满天飞,但都是转帖,运行后的效果却是获取到Android的默认小机器人图标.那个暴寒....
见代码:
2011-3-1 13:29 上传
下载附件 (13.74 KB)
本方法需要使用到Java反射的知识,具体请参考:
http://java.sun.com/developer/te ... flection/index.html
借鉴的Android源码出处:
XXoo这个链接好长ooXX
package lab.sodino.fetchapkicon;
import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
/**
* @author Sodino sodinoopen@hotmail.com
* @since 2011年3月1日13时00分41秒
* */
public class FetchAPKIconAct extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
showUninstallAPKIcon("/sdcard/APK/JarodYv.FishPool.apk");
getUninatllApkInfo(this, "/sdcard/APK/JarodYv.FishPool.apk");
}
/** 网传的方法,但获取不成功 */
public void getUninatllApkInfo(Context context, String archiveFilePath) {
PackageManager pm = context.getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);
if (info != null) {
ApplicationInfo appInfo = info.applicationInfo;
Drawable icon = pm.getApplicationIcon(appInfo);
ImageView image = (ImageView) findViewById(R.id.apkIconByTradition);
image.setVisibility(View.VISIBLE);
image.setImageDrawable(icon);
}
}
//
private void showUninstallAPKIcon(String apkPath) {
String PATH_PackageParser = "android.content.pm.PackageParser";
String PATH_AssetManager = "android.content.res.AssetManager";
try {
// apk包的文件路径
// 这是一个Package 解释器, 是隐藏的
// 构造函数的参数只有一个, apk文件的路径
// PackageParser packageParser = new PackageParser(apkPath);
Class pkgParserCls = Class.forName(PATH_PackageParser);
Class[] typeArgs = new Class[1];
typeArgs[0] = String.class;
Constructor pkgParserCt = pkgParserCls.getConstructor(typeArgs);
Object[] valueArgs = new Object[1];
valueArgs[0] = apkPath;
Object pkgParser = pkgParserCt.newInstance(valueArgs);
Log.d("ANDROID_LAB", "pkgParser:" + pkgParser.toString());
// 这个是与显示有关的, 里面涉及到一些像素显示等等, 我们使用默认的情况
DisplayMetrics metrics = new DisplayMetrics();
metrics.setToDefaults();
// PackageParser.Package mPkgInfo = packageParser.parsePackage(new
// File(apkPath), apkPath,
// metrics, 0);
typeArgs = new Class[4];
typeArgs[0] = File.class;
typeArgs[1] = String.class;
typeArgs[2] = DisplayMetrics.class;
typeArgs[3] = Integer.TYPE;
Method pkgParser_parsePackageMtd = pkgParserCls.getDeclaredMethod("parsePackage",
typeArgs);
valueArgs = new Object[4];
valueArgs[0] = new File(apkPath);
valueArgs[1] = apkPath;
valueArgs[2] = metrics;
valueArgs[3] = 0;
Object pkgParserPkg = pkgParser_parsePackageMtd.invoke(pkgParser, valueArgs);
// 应用程序信息包, 这个公开的, 不过有些函数, 变量没公开
// ApplicationInfo info = mPkgInfo.applicationInfo;
Field appInfoFld = pkgParserPkg.getClass().getDeclaredField("applicationInfo");
ApplicationInfo info = (ApplicationInfo) appInfoFld.get(pkgParserPkg);
// uid 输出为"-1",原因是未安装,系统未分配其Uid。
Log.d("ANDROID_LAB", "pkg:" + info.packageName + " uid=" + info.uid);
// Resources pRes = getResources();
// AssetManager assmgr = new AssetManager();
// assmgr.addAssetPath(apkPath);
// Resources res = new Resources(assmgr, pRes.getDisplayMetrics(),
// pRes.getConfiguration());
Class assetMagCls = Class.forName(PATH_AssetManager);
Constructor assetMagCt = assetMagCls.getConstructor((Class[]) null);
Object assetMag = assetMagCt.newInstance((Object[]) null);
typeArgs = new Class[1];
typeArgs[0] = String.class;
Method assetMag_addAssetPathMtd = assetMagCls.getDeclaredMethod("addAssetPath",
typeArgs);
valueArgs = new Object[1];
valueArgs[0] = apkPath;
assetMag_addAssetPathMtd.invoke(assetMag, valueArgs);
Resources res = getResources();
typeArgs = new Class[3];
typeArgs[0] = assetMag.getClass();
typeArgs[1] = res.getDisplayMetrics().getClass();
typeArgs[2] = res.getConfiguration().getClass();
Constructor resCt = Resources.class.getConstructor(typeArgs);
valueArgs = new Object[3];
valueArgs[0] = assetMag;
valueArgs[1] = res.getDisplayMetrics();
valueArgs[2] = res.getConfiguration();
res = (Resources) resCt.newInstance(valueArgs);
CharSequence label = null;
if (info.labelRes != 0) {
label = res.getText(info.labelRes);
}
// if (label == null) {
// label = (info.nonLocalizedLabel != null) ? info.nonLocalizedLabel
// : info.packageName;
// }
Log.d("ANDROID_LAB", "label=" + label);
// 这里就是读取一个apk程序的图标
if (info.icon != 0) {
Drawable icon = res.getDrawable(info.icon);
ImageView image = (ImageView) findViewById(R.id.apkIconBySodino);
image.setVisibility(View.VISIBLE);
image.setImageDrawable(icon);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
发表评论
-
查看Android应用包名package和入口activity名称
2014-08-05 16:20 2167使用android自动化测试工具monkeyrunner启动 ... -
设置默认应用
2014-05-15 11:46 1719setDefaultLauncher(); ... -
Android之APK文件签名——keytool和jarsigner
2012-10-10 14:06 1851一、生成密钥库将位置定位在jdk的bin文件中,输入以下命名行 ... -
Android中应用程序如何获得系统签名权限
2012-08-21 14:18 0有些库的使用条件比较苛刻,要求同一签名的程序才可以获得访问权。 ... -
Android中应用程序如何获得系统签名权限
2012-08-21 14:18 0有些库的使用条件比较苛刻,要求同一签名的程序才可以获得访问权。 ... -
Android权限共享UID和签名(转)
2012-08-21 14:17 1753共享UID 安装在设备中的每一个Android包文件(.ap ... -
android小结
2012-04-17 10:21 16251.获取屏幕的分辨率 在 Activity 里使 ... -
TextView实现电话、网址链接
2012-03-22 17:39 1635TextView是android中一个组件,具有autolin ... -
Android Eclipse JNI 调用 .so文件加载
2012-03-01 18:41 5960http://blog.sina.com.cn/s/blo ... -
Gallery加小点效果实现
2012-02-15 16:15 1685大家好: 心雨心今天又跟大家见面了 今天发布的是Gal ... -
如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09
2011-12-21 13:39 1610问题概述: 在导入一个app后提示如下错误(出现该问题, ... -
Android Google Map API 开发基础知识
2011-12-16 17:25 1769开发基于谷歌地图的应用和普通的android应用差不多都要 ... -
使一段字符串显示不同的颜色
2011-12-12 15:09 2659一种:字体颜色改变 String appna ... -
droid系统中使用TelephonyManager类来获取imei号和其他手机信息
2011-11-22 11:15 14818在AndroidManifest.xml文件中增加& ... -
CategoryAdapter控件
2011-11-17 10:50 1542使用方法: private Cate ... -
(转)Android开发:在EditText中关闭软键盘
2011-11-04 13:45 151821、EditText有焦点(focusable为true)阻止 ... -
android ListView的美化涉及到的一些属性
2011-08-26 10:44 2369用心的朋友应该会发现,listview中在设置了背景之后。会有 ... -
ScrollView中嵌入ListView办法
2011-08-11 17:13 2264①layout布局代码: <ScrollView an ... -
android 混淆 去除第三方jar
2011-06-10 19:05 12509编译与反编译,一对相辅相成的 ... -
listview列表控件的快速滚动滑块
2011-06-09 17:37 2399listview列表控件的快速滚动滑块是如何启用的 ...
相关推荐
android获取未安装APK文件的图标 android开发技巧整理
下面小编就为大家分享一篇Android 获取未安装的APK图标、版本号、包名等信息方法,具有很好的参考价值,希望对大家有所帮助。
这是一个androidapk图标提取软件,可以提取APK中的图标。
获取Android设备上已安装的应用信息,包括图标,应用名称,工程名,安装路径等信息。
Java读取apk版本信息和图标。 修改代码可以继续获取apk内其他资源。
纯java 不使用andoird SDK 解析android应用apk获取其icon图标 aapt及aaot.exe 取自andorid sdk
APK 文件图标查看器 可以查看APK文件图标 获取android手机卡文件信息 VS2008编译通过 可执行程序请在http://www.itfunz.com/ 下载
1.获取指定APK的信息 APK包名 APK图标 APK版本 2.附带有 通过shap 配置背景 3.修改toast 弹出框的 样式、及多次信息显示不阻塞 4.启动选定的APK,复制获取的信息(包名、APK名称)到剪贴板
列表显示,获取手机上已安装apk的图标名称等信息,并提供打开相应文件需要的程序过滤工具类
python aapt 分析APK文件,获取应用包名,版本号,版本名 代码直接复制即可,亲测多次可用,
java环境获取apk的信息(包名,版本号,版本名,权限,图标等信息),可直接导入android studio跑通,查看main方法,把apk的地址复制进去,右键main方法执行即可(需配置aapt环境变量,sdk中build-tools文件夹下...
//获取apk包名 $apkParser->getManifest()->getVersionCode(); //获取apk版本号 $apkParser->getManifest()->getVersionName(); //获取apk版本名称 $apkParser->getManifest()->getMinSdk(); // 支持最低sdk的...
智能提取APK信息,如提取APK名字,大小,包名,图标,版本号等信息。如果有什么疑问,请E我
支持提取高清图标 支持提取APK对应的权限,并且给出权限注释 支持提取签名信息,包括签名者,证书MD5,证书SHA信息 提取入口activity,支持平台,支持语言,屏幕大小和SDK版本等 支持文件关联,双击即可打开 ...
APK解析器库,用于解码二进制XML文件,获取APK元信息。 目录 特征 检索APK元信息,例如标题,图标,程序包名称,版本等。 解析二进制XML文件并将其转换为文本 从DEX文件获取类 获取APK歌手信息 获取APK解析器 从...
通过PHP解析上传的APK包,获取包括app名、版本、图标名、包名等所有信息,并可以将图标复制到置顶的文件夹存放。
java获取android apk包名、版本、权限、图标、启动图等信息。maven构建,test下有示例代码,原代码来源于互联网,二次开发。
代码如下:/** * 获取apk包的信息:版本号,名称,图标等 * @param absPath apk包的绝对路径 * @param context */ public void apkInfo(String absPath,Context context) { PackageManager pm = context....
百度的资料都是java,很蛋疼,自己写了一个c#。技术有限,处理比较粗糙,大家参考下便好。由于上传文件不能太大,我把安装包给删了,大家请自备安装包。