- 浏览: 886591 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
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 686Installation error: INSTALL_PA ... -
解决ADB server didn't ACK问题
2013-08-01 16:06 1015之前运行eclipse执行android应用都没问题,今天突然 ... -
Android应用签名
2013-01-08 15:05 1389为了要签名? 开发Android的人这么多,完全 ... -
Android中图片与屏幕密度 .
2012-10-10 14:19 868在drawable中的图片在不同密度的设备上显示时,在屏幕上的 ... -
在电脑上安装Android模拟器-部分更新详解
2012-10-09 17:03 1412本文根据如下的模拟器 ... -
android 反射机制中 getMethod()和getDeclaredField()区别
2012-09-15 11:33 10412今天在程序中用到java反 ... -
android2.2 的cookie
2012-08-29 19:22 927public static void getCookies(H ... -
把第三方的jar打包到android的apk文件中
2012-08-23 16:34 2424在android项目中新建一个文件夹libs,必须用这个,不能 ... -
Android调用天气预报的WebService简单例子
2012-08-23 11:47 1016下面例子改自网上例子:http://express.ruank ... -
android 正则表达式
2012-08-21 15:58 1320只能输入数字:"^[0-9]*$"。只能输 ... -
用反射功能找不到匹配的类的时候调试方法
2012-08-19 14:17 3585可以通过输出所有的methods 或者declaredMeth ... -
android 生命周期研究资料
2012-08-06 16:46 1123引言 应用程序组件有一个生命周期——一开始Android ... -
Android-----WebView使用
2012-08-01 20:06 1063大部分内容为网上整理其它高人的帖子,现只作整理,用于查看: ... -
Android开发_如何调用系统默认浏览器访问
2012-08-01 19:31 1023一、启动android默认浏览 ... -
Android代码混淆的实践
2012-07-20 12:48 898发apk的时候当然要考虑保护好自己的代码,Android环境就 ... -
Android 获取文件目录以及文件的删除 .
2012-07-14 22:24 1407//看来看一下效果 //main.xml文件 & ... -
Android Intent的几种用法全面总结
2012-07-14 14:21 894Intent应该算是Android中特有的东西。你可以 ... -
Android获取未安装或已安装apk的版本、图标等资源 .
2012-07-12 23:06 1523在上篇博文中介绍了Android动态加载APK--代码安装、获 ... -
Android 动态加载APK--代码安装、获取资源及Intent调用已安装apk .
2012-07-12 23:05 7127最近在研究Android动态加载APK技术,偶有小得,共享一下 ... -
android系统中 从一个apk启动另外一个apk
2012-07-12 21:24 1587Intent mIntent = new Intent(“an ...
相关推荐
以下是一个简单的获取APK图标的方法: ```java Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(apkPath + "!/res/drawable-mdpi/ic_launcher.png")); ``` 这个代码假设图标位于drawable-mdpi...
APK文件包含了应用的所有代码、资源、图标、权限声明等。本文将详细介绍如何使用apk解包打包工具,以及相关步骤,适合初学者学习。 首先,我们要理解APK解包的目的是什么。解包APK是为了查看应用的源代码、资源文件...
首先,我们要明白APK文件是什么。APK是Android应用程序的包文件格式,它包含了应用的所有组成部分,如代码、资源文件、图标等。当用户下载一个主题APK,其实就是在下载一个包含主题元素(如启动器图标、壁纸、通知栏...
它能够帮助我们快速获取APK文件的关键信息,如外部版本号、内部版本号、包名、应用图标(icon)以及MD5哈希值等,这些信息对于开发者、测试人员和安全分析者来说具有重要的价值。现在,让我们一起深入了解APKHelper...
Apktool是一个开源的工具,主要用于对APK文件进行解包、反编译、修改和重新打包。它能够解析APK中的资源文件,包括XML布局、图片、字符串等,并将它们以人类可读的形式呈现出来。使用Apktool,你可以查看应用程序的...
通过阅读文档,开发者可以了解如何调用特定的函数或方法来实现特定功能,比如获取应用列表、安装APK等。 最后,UML(Unified Modeling Language)是一种标准的图形化建模语言,用于软件设计和系统建模。在这个案例...
PHP是一种服务器端脚本语言,通常用于构建Web应用,但也可以用来处理APK文件以获取其中的信息,如版本号。在本案例中,提供的文件可能是一个简单的PHP脚本集合,用于检查和管理Android APK的版本更新。 `Apkparser....
源码AppPlus,App+是一个MD风格的用于传送、提取APK文件的开源工具软件。 优雅体面的提取APK 在工作过程中,有时需要反编译一些软件的APK,此时这些软件就存在于自己的手机,但是无法直接获得从手机中获取APK,...
总之,这个"最简单的输入法.zip"是一个很好的学习资源,无论是对于初学者还是有一定经验的Android开发者,都能从中获取到实践经验和理论知识。通过深入研究这个项目,开发者可以掌握创建自定义输入法的关键技术和...
APK文件包含了应用的所有组件,包括代码、资源、图片以及相关的配置文件。用户可以通过点击APK文件来安装应用程序,就像Windows系统中的.exe可执行文件一样。在本例中,"Tina.apk"很可能是一个小型的Android应用程序...
- `getView(int position, View convertView, ViewGroup parent)`: 这是最重要的方法,它负责创建或复用ListView的列表项视图。在这里,我们将使用LayoutInflater实例化`list_item.xml`布局,并设置ImageView和...
2. **图标包**:图标包包含了一组替换原生应用图标的自定义图标,用户可以通过下载安装来改变桌面应用的外观。这些图标通常设计独特,风格各异,例如扁平化、手绘、拟物化等。 3. **壁纸**:选择个性化的壁纸可以极...
- `HashSet<String> pkgList`: 存储该进程中包含的所有APK文件的包名。 - `int maxAdj`: 进程的最大调整值,用于OOM(Out Of Memory)情况下的进程优先级评估。 - `int curAdj`: 当前调整值。 2. **...
这就是一个简单的Android获取手机所有已安装应用并能打开它们的Demo。通过这个例子,我们可以学习到如何使用PackageManager获取应用信息、动态请求权限以及使用Intent启动应用等关键知识点。这个Demo可以作为理解...
★文件浏览器*是一个非常简单但功能强大的浏览器,可以使用根目录,按日期,大小和流媒体文件排序以及更新权限,所有权和安全性上下文。本地或任何Samba网络共享 ★应用程序管理器*提供了您期望的所有功能,以及...
1. 应用程序安装包(APK文件):如 "同桌教育手机版_v1.0.apk",这是用户在Android设备上安装应用的文件。 2. 说明文档:可能包括 "ReadMe.txt" 或 "UserGuide.pdf",提供应用的使用指南和注意事项。 3. 图标资源:...
安装过程通常很简单,只需通过手机的文件管理器找到该apk文件,点击进行安装,遵循提示完成操作即可。 在使用凯立德导航时,用户可以享受到多种实用功能,如路径规划、实时路况查询、语音播报、离线地图下载等。...
以下是一个简单的示例,展示了如何使用隐藏API来解析一个APK文件并获取相关信息: ```java // 定义APK文件路径 String apkPath = "/sdcard/qq.apk"; // 创建PackageParser对象 PackageParser packageParser = new ...
5. `bin` - 编译后生成的二进制文件和资源的目录,包括APK文件。 6. `src` - 存放源代码的目录,每个Java类对应一个文件。 7. `res` - 资源文件夹,包含应用的布局(layout)、图标(drawable)、字符串(values)等...
“ant clean debug install” 直接将插件apk安装到系统中,PluginMain工程会监听系统的应用安装广播,监听到插件apk安装广播后, 再自动调用PluginLoader.installPlugin("/data/app/插件apk文件.apk")进行插件安装。...