- 浏览: 878166 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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)
如下就是一个工具类,其作用是采用递归扫描SD卡上的apk文件,判断该应用是否在手机上安装过,如果安装过再去判断是否可以升级。具体代码如下:
/** * 获取手机上apk文件信息类,主要是判断是否安装再手机上了,安装的版本比较现有apk版本信息 * <A href="http://my.oschina.net/arthor" rel=nofollow target=_blank>@author</A> Dylan */ public class ApkSearchUtils { private static int INSTALLED = 0; // 表示已经安装,且跟现在这个apk文件是一个版本 private static int UNINSTALLED = 1; // 表示未安装 private static int INSTALLED_UPDATE =2; // 表示已经安装,版本比现在这个版本要低,可以点击按钮更新 private Context context; private List<MyFile> myFiles = new ArrayList<MyFile>(); public List<MyFile> getMyFiles() { return myFiles; } public void setMyFiles(List<MyFile> myFiles) { this.myFiles = myFiles; } public ApkSearchUtils(Context context) { super(); this.context = context; } /** * @param args * 运用递归的思想,递归去找每个目录下面的apk文件 */ public void FindAllAPKFile(File file) { // 手机上的文件,目前只判断SD卡上的APK文件 // file = Environment.getDataDirectory(); // SD卡上的文件目录 if (file.isFile()) { String name_s = file.getName(); MyFile myFile = new MyFile(); String apk_path = null; // MimeTypeMap.getSingleton() if (name_s.toLowerCase().endsWith(".apk")) { apk_path = file.getAbsolutePath();// apk文件的绝对路劲 // System.out.println("----" + file.getAbsolutePath() + "" + // name_s); PackageManager pm = context.getPackageManager(); PackageInfo packageInfo = pm.getPackageArchiveInfo(apk_path, PackageManager.GET_ACTIVITIES); ApplicationInfo appInfo = packageInfo.applicationInfo; /**获取apk的图标 */ appInfo.sourceDir = apk_path; appInfo.publicSourceDir = apk_path; Drawable apk_icon = appInfo.loadIcon(pm); myFile.setApk_icon(apk_icon); /** 得到包名 */ String packageName = packageInfo.packageName; myFile.setPackageName(packageName); /** apk的绝对路劲 */ myFile.setFilePath(file.getAbsolutePath()); /** apk的版本名称 String */ String versionName = packageInfo.versionName; myFile.setVersionName(versionName); /** apk的版本号码 int */ int versionCode = packageInfo.versionCode; myFile.setVersionCode(versionCode); /**安装处理类型*/ int type = doType(pm, packageName, versionCode); myFile.setInstalled(type); Log.i("ok", "处理类型:"+String.valueOf(type)+"\n" + "------------------我是纯洁的分割线-------------------"); myFiles.add(myFile); } // String apk_app = name_s.substring(name_s.lastIndexOf(".")); } else { File[] files = file.listFiles(); if (files != null && files.length > 0) { for (File file_str : files) { FindAllAPKFile(file_str); } } } } /* * 判断该应用是否在手机上已经安装过,有以下集中情况出现 * 1.未安装,这个时候按钮应该是“安装”点击按钮进行安装 * 2.已安装,按钮显示“已安装” 可以卸载该应用 * 3.已安装,但是版本有更新,按钮显示“更新” 点击按钮就安装应用 */ /** * 判断该应用在手机中的安装情况 * @param pm PackageManager * @param packageName 要判断应用的包名 * @param versionCode 要判断应用的版本号 */ private int doType(PackageManager pm, String packageName, int versionCode) { List<PackageInfo> pakageinfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); for (PackageInfo pi : pakageinfos) { String pi_packageName = pi.packageName; int pi_versionCode = pi.versionCode; //如果这个包名在系统已经安装过的应用中存在 if(packageName.endsWith(pi_packageName)){ //Log.i("test","此应用安装过了"); if(versionCode==pi_versionCode){ Log.i("test","已经安装,不用更新,可以卸载该应用"); return INSTALLED; }else if(versionCode>pi_versionCode){ Log.i("test","已经安装,有更新"); return INSTALLED_UPDATE; } } } Log.i("test","未安装该应用,可以安装"); return UNINSTALLED; } }
如果有人看到并且指出上述代码不足支出,非常感谢!
摘自:http://my.oschina.net/keeponmoving/blog/61749
发表评论
-
Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
2013-08-02 15:27 670Installation error: INSTALL_PA ... -
解决ADB server didn't ACK问题
2013-08-01 16:06 999之前运行eclipse执行android应用都没问题,今天突然 ... -
Android应用签名
2013-01-08 15:05 1355为了要签名? 开发Android的人这么多,完全 ... -
Android中图片与屏幕密度 .
2012-10-10 14:19 857在drawable中的图片在不同密度的设备上显示时,在屏幕上的 ... -
在电脑上安装Android模拟器-部分更新详解
2012-10-09 17:03 1368本文根据如下的模拟器 ... -
android 反射机制中 getMethod()和getDeclaredField()区别
2012-09-15 11:33 10386今天在程序中用到java反 ... -
android2.2 的cookie
2012-08-29 19:22 917public static void getCookies(H ... -
把第三方的jar打包到android的apk文件中
2012-08-23 16:34 2408在android项目中新建一个文件夹libs,必须用这个,不能 ... -
Android调用天气预报的WebService简单例子
2012-08-23 11:47 1006下面例子改自网上例子:http://express.ruank ... -
android 正则表达式
2012-08-21 15:58 1288只能输入数字:"^[0-9]*$"。只能输 ... -
用反射功能找不到匹配的类的时候调试方法
2012-08-19 14:17 3536可以通过输出所有的methods 或者declaredMeth ... -
android 生命周期研究资料
2012-08-06 16:46 1077引言 应用程序组件有一个生命周期——一开始Android ... -
Android-----WebView使用
2012-08-01 20:06 1032大部分内容为网上整理其它高人的帖子,现只作整理,用于查看: ... -
Android开发_如何调用系统默认浏览器访问
2012-08-01 19:31 1011一、启动android默认浏览 ... -
Android代码混淆的实践
2012-07-20 12:48 857发apk的时候当然要考虑保护好自己的代码,Android环境就 ... -
Android 获取文件目录以及文件的删除 .
2012-07-14 22:24 1362//看来看一下效果 //main.xml文件 & ... -
Android Intent的几种用法全面总结
2012-07-14 14:21 882Intent应该算是Android中特有的东西。你可以 ... -
最简单的获取未安装APK文件图标、包名的方法
2012-07-13 17:14 1470package lab.sodino.fetchapkicon ... -
Android获取未安装或已安装apk的版本、图标等资源 .
2012-07-12 23:06 1503在上篇博文中介绍了Android动态加载APK--代码安装、获 ... -
Android 动态加载APK--代码安装、获取资源及Intent调用已安装apk .
2012-07-12 23:05 7111最近在研究Android动态加载APK技术,偶有小得,共享一下 ...
相关推荐
总结,Android SD卡文件浏览器是Android设备上不可或缺的工具,它使用户能够高效地管理自己的数据。开发者在实现这一功能时,不仅要关注基本的文件操作,还要注重用户体验和安全性的考虑,从而打造一款功能强大且...
在Android系统中,SD卡(Secure Digital Card)主要用于扩展设备的存储空间,用户可以将照片、音乐、视频等文件存储到SD卡上。文件管理是Android应用开发中的一个重要环节,尤其是当涉及到版本更新时,开发者需要...
当涉及到文件管理时,特别是更新信息,UpdateHelper库可能提供了处理SD卡上的更新文件和检查新版本的API。这包括读取SD卡上的更新文件、验证文件的完整性以及在后台线程中安全地进行文件替换或安装。 `JavaApk源码...
3. **下载新版本APK**:如果检测到新版本,将从服务器下载最新的APK文件至SD卡中。 4. **监听安装状态**:监听新版本的APK文件安装进度,安装完成后自动删除下载的文件。 #### 三、程序框架流程 1. **版本检测**:...
AndroidKiller是一款常用的Android应用分析工具,它可以帮助开发者或安全研究人员查看APK的源代码、资源文件、反编译Dex文件等,以理解应用的工作原理或寻找潜在的安全漏洞。 在描述中提到的“修复反编译源码卡死”...
标题中的"android动态加载class文件(DexClassLoader可从SD卡加载)"指的是利用Android的DexClassLoader类来实现从外部存储(如SD卡)加载Dalvik执行文件(.dex)的能力。这一技术在开发过程中能显著提升应用的灵活...
1. 监听SD卡上`Plugin.apk`的变化,当检测到新版本时,自动或提示用户更新。 2. 实现热更新机制,允许在不重启应用的情况下替换旧插件。 3. 处理版本兼容性问题,确保新旧插件能与主应用协同工作。 总结来说,...
Android提供了`Environment`类,用于获取SD卡(或外部存储)的相关路径,如`getExternalStorageDirectory()`方法返回根目录,`getExternalFilesDir()`则返回应用私有的外部存储目录。此外,`File`类是处理文件操作的...
1. **Android 文件管理系统**:Android 设备允许用户访问和管理设备上的所有文件,包括内部存储和外部 SD 卡。文件浏览器是实现这一功能的重要工具。 2. **文件管理器功能**:一款好的文件浏览器通常包括浏览目录、...
Android提供了`FileUtils`(非官方,如开源库Apache Commons IO)这样的工具类,它们提供了一些便利的方法,如复制文件、移动文件、判断文件是否存在等,简化了文件操作的代码。 总的来说,Android文件I/O涵盖了很...
1. 将APK文件复制到设备的存储卡或者连接设备到电脑,通过USB传输。 2. 在设备上,打开“设置”,找到“安全”或“关于手机”,启用“未知来源”以允许安装非Play Store的应用。 3. 找到APK文件,点击运行安装。系统...
综合上述信息,这份需求文档是针对Android软件管理工具的,它需要支持多个Android版本和API级别,采用Eclipse作为开发环境和Java作为编程语言,能够处理APK文件以及与SD卡等存储介质交互,并具备管理常见应用如Gmail...
1. **Android文件系统**:讲解Android系统中的文件存储结构,包括内部存储、外部存储以及SD卡的使用。 2. **Android UI设计**:通过图片展示小米文件管理器的界面设计,包括布局、控件、颜色搭配和交互逻辑。 3. *...
首先,确保你的电脑上已经安装了如91手机助手或豌豆夹之类的手机管理软件,这类软件能够帮助电脑识别连接的Android设备,并进行数据传输和管理。这些助手软件通常需要开启手机的USB调试模式,你可以在开发者选项中...
在Android系统中,"dumpdex"通常是指一种工具或技术,用于从已安装的应用程序中提取DEX(Dalvik Executable)文件,这是Android应用程序的主要执行文件。标题提到的"适配android9.0的dumpdex"意味着这个版本的...
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
- 可以使用如UltraISO之类的工具打开并修改SD卡文件。 - 修改完成后记得保存,并关闭模拟器再重新启动以应用更改。 #### 四、常见问题与解决方法 - **模拟器启动缓慢或卡顿**:检查计算机的硬件配置是否满足...
- adb install 命令:用于安装一个apk文件到指定的设备上。若目标设备为模拟器,需要指定模拟器的端口号。 - emulator -avd avd_name命令:启动名为avd_name的Android虚拟设备,简化了操作流程,避免了通过Eclipse...