- 浏览: 863575 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
hzw2312:
C = sin(MLatA)*sin(MLatB)*cos(M ...
根据地球上任意两点的经纬度计算两点间的距离 -
zhang_sun:
rewind方法的limit又是多少呢?等于capacity? ...
ByteBuffer的flip,clear及rewind区别 -
kalogen:
一种每次都获取到不同的随机数的办法int ranseed=12 ...
J2ME中Random类的使用 -
kalogen:
估计部署在某个端口下吧,仔细检查一下发布的配置文件
Tomcat负载均衡和集群环境的搭建 -
zhuchao_ko:
文件大点就嗝屁了~~~
Axis 1.4 上传二进制文件(base64Binary)
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; 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(); } } }
/**
* @param aContext
* @param aApkPath
* 要读取的apk路径
* @throws Exception
*/
public ApkInfoUtil(Context aContext , String aApkPath) throws Exception
{
PackageManager pm = aContext.getPackageManager();
pi = pm.getPackageArchiveInfo(aApkPath, 0);
AssetManager am = AssetManager.class.newInstance();
Method method = AssetManager.class.getDeclaredMethod("addAssetPath", String.class);
method.invoke(am, aApkPath);
iRes = new Resources(am, aContext.getResources().getDisplayMetrics(), aContext.getResources().getConfiguration());
}
发表评论
-
Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
2013-08-02 15:27 628Installation error: INSTALL_PA ... -
解决ADB server didn't ACK问题
2013-08-01 16:06 960之前运行eclipse执行android应用都没问题,今天突然 ... -
Android应用签名
2013-01-08 15:05 1326为了要签名? 开发Android的人这么多,完全 ... -
Android中图片与屏幕密度 .
2012-10-10 14:19 832在drawable中的图片在不同密度的设备上显示时,在屏幕上的 ... -
在电脑上安装Android模拟器-部分更新详解
2012-10-09 17:03 1333本文根据如下的模拟器 ... -
android 反射机制中 getMethod()和getDeclaredField()区别
2012-09-15 11:33 10324今天在程序中用到java反 ... -
android2.2 的cookie
2012-08-29 19:22 887public static void getCookies(H ... -
把第三方的jar打包到android的apk文件中
2012-08-23 16:34 2370在android项目中新建一个文件夹libs,必须用这个,不能 ... -
Android调用天气预报的WebService简单例子
2012-08-23 11:47 971下面例子改自网上例子:http://express.ruank ... -
android 正则表达式
2012-08-21 15:58 1211只能输入数字:"^[0-9]*$"。只能输 ... -
用反射功能找不到匹配的类的时候调试方法
2012-08-19 14:17 3481可以通过输出所有的methods 或者declaredMeth ... -
android 生命周期研究资料
2012-08-06 16:46 1026引言 应用程序组件有一个生命周期——一开始Android ... -
Android-----WebView使用
2012-08-01 20:06 993大部分内容为网上整理其它高人的帖子,现只作整理,用于查看: ... -
Android开发_如何调用系统默认浏览器访问
2012-08-01 19:31 978一、启动android默认浏览 ... -
Android代码混淆的实践
2012-07-20 12:48 789发apk的时候当然要考虑保护好自己的代码,Android环境就 ... -
Android 获取文件目录以及文件的删除 .
2012-07-14 22:24 1320//看来看一下效果 //main.xml文件 & ... -
Android Intent的几种用法全面总结
2012-07-14 14:21 858Intent应该算是Android中特有的东西。你可以 ... -
Android获取未安装或已安装apk的版本、图标等资源 .
2012-07-12 23:06 1468在上篇博文中介绍了Android动态加载APK--代码安装、获 ... -
Android 动态加载APK--代码安装、获取资源及Intent调用已安装apk .
2012-07-12 23:05 7080最近在研究Android动态加载APK技术,偶有小得,共享一下 ... -
android系统中 从一个apk启动另外一个apk
2012-07-12 21:24 1528Intent mIntent = new Intent(“an ...
相关推荐
android获取未安装APK文件的图标 android开发技巧整理
apk文件图标,装了这个组件后,可以显示apk图标文件,要是系统中安装了91助手和其他工具后,需要解除关联才能够正常显示。
电视盒 apk文件 华为机顶盒安装apk方法(电视直播视频)电视盒 apk文件 华为机顶盒安装apk方法(电视直播视频)电视盒 apk文件 华为机顶盒安装apk方法(电视直播视频)电视盒 apk文件 华为机顶盒安装apk方法(电视...
下面小编就为大家分享一篇Android 获取未安装的APK图标、版本号、包名等信息方法,具有很好的参考价值,希望对大家有所帮助。
python aapt 分析APK文件,获取应用包名,版本号,版本名 代码直接复制即可,亲测多次可用,
APK 文件图标查看器 可以查看APK文件图标 获取android手机卡文件信息 VS2008编译通过 可执行程序请在http://www.itfunz.com/ 下载
获取第三方apk的包名启动类名icon.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
php获取apk基本信息 包名 应用名称 版本名称 支持屏幕 支持语言等 相关操作都在包里面
android 自动获取用户手机上所有apk的包名,可根据需求进行修改。
unity调用安卓方法实现apk文件的安装。亲测支持安卓7,8,9。附有安卓源码在MyApplication目录下面。请用unity2018.2.13以上版本打开。直接在unity打包安卓即可测试。如果出现打包失败的报错可能是你把项目解压到了...
3、查看单个apk文件apk包名、版本号 执行命令./version.sh apk_a01.apk查看所有apk apk_a01版本号及versionCode NOTE: 如提示找不到aapt,请把aapt添加到环境变量中,aapt目录android-sdk-linux/build-tools下 ...
电脑上运行此程序就可以了。获取当前 APK 文件信息。
java通过上传文件的方式,根据文件APK来获取应用apk的包名,版本号等信息。全部封闭成名,操作起来非常的方便,如有疑问可以在下面留言!
win7下显示apk文件的图标,相当实用! win7、xp系统测试通过 如何使用APK扩展 ---安装--- 下载download里面的最新压缩包apkshellext_v2_1.zip 解压缩到安全的地方,卸载这个扩展前将不能移动也不能删除 ,注意要用...
自动获取目标文件夹下所有APK的包名。方便做移动开发人员使用。有需要的朋友可以交流
可以获取安卓系统下,所有软件的包名与类名,用于安卓桥接开发很有帮助,是个很不错的安卓脚本开发工具.直接打开即可使用,真机与模拟器均可使用
在应用中集成AXMLPrinter,从apk文件中提取包名,版本等信息。 AnalysisApk.java是从apk中提取manifest.xml文件。从而使用AXMLPrinter进行解析。 如果在安卓工程中,直接使用AXMLPrinter的jar,会报错java.lang....
安装APK文件到Android模拟器.doc安装APK文件到Android模拟器.doc安装APK文件到Android模拟器.doc安装APK文件到Android模拟器.doc安装APK文件到Android模拟器.doc安装APK文件到Android模拟器.doc
java环境获取apk的信息(包名,版本号,版本名,权限,图标等信息),可直接导入android studio跑通,查看main方法,把apk的地址复制进去,右键main方法执行即可(需配置aapt环境变量,sdk中build-tools文件夹下...