android怎么获取自身apk大小?

很久没更新博客了,前不久看到看到公司的项目中获取app自身大小还是从服务器端反回回来的,还不能用。这么xxx不说了。下面就看看怎么获取自身app的大小的。

注:此处只是获取自己的apk的大小。

首先我们需要的是权限:

<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>

接下来当然是获取PackageManager了啊:

PackageManager mPackageManager=getPackageManager();
		try {
			PackageInfo pInfo=mPackageManager.getPackageInfo(getPackageName(),0);
			mPackageName=pInfo.packageName;
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}

在接下来

//返回一个安装到设备上的所有应用程序包列表

List<ApplicationInfo> installList=mPackageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
		for (int i = 0; i < installList.size(); i++) {
			ApplicationInfo info=installList.get(i);
			if(info.packageName.equals(mPackageName)){//如果这个packagename和当前apk的packagename一样,你就可以获取它的大小了。
				String dir=info.publicSourceDir;
				int size=Integer.valueOf((int)new File(dir).length());
				BigDecimal apkSize=parseApkSize(size);
				tvSize.setText("apk大小:"+apkSize+"M");//最后显示的应用程序大小了
			}
		}

java中保留两位小数:

private BigDecimal parseApkSize(int size) {
		BigDecimal bd = new BigDecimal((double)size/(1024*1024));
                BigDecimal setScale = bd.setScale(2, BigDecimal.ROUND_DOWN);
		return setScale;
	}
时间: 2024-10-11 22:35:16

android怎么获取自身apk大小?的相关文章

Qt For Android 如何获取手机屏幕大小

获取方法 首先看一段程序代码: int main(int argc, char *argv[]) { QApplication a(argc, argv); Dialog w; w.show(); return a.exec(); } a为应用程序,w为对话框:我们获取屏幕大小,需要从变量a这里获取: QScreen *iScreen = a.primaryScreen(); QSize rScreenSize = iScreen->size(); 虽然把屏幕大小获得了,但是我们改变UI大小的程

无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

Android减包 - 减少APK大小

本文是对Google官方文档 Reduce APK Size 的翻译,点击"阅读原文"可以查看英文原文. 译者简介:damonxia(夏正冬),天天P图Android工程师 用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G.3G网络或者在以字节付费的网络.这篇文章描述了怎样减少你的APK大小,这会让更多的用户愿意下载你的应用. 理解APK的结构 在讨论怎样减少应用大小之前,先了解APK的结构是有用的.一个APK文件就是ZIP包,其中包含了组成你的应用的所有文件,比如Java

Android中获取应用程序(包)的大小-----PackageManager的使用(二)

通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidManife.xml定义的节点信息类XXXInfo类都有了一定的认识. 本部分的内容是如何获取安装包得大小,包括缓存大小(cachesize).数据大小(datasize).应用程序大小(codesize). 本部分的知识点涉及到AIDL.Java反射机制.理解起来也不是很难. 关于安装包得大小信息封装在Packag

Android获取图片实际大小兼容平板电脑

项目中有个图片在平板电脑中显示特别小的原因,一直苦于没找到原因,也没有平板电脑测试,今天找了个修改分辨率的,编写相关方法终于处理了,记录下比较: 好让以后不造轮子. 主要是获取文章相关图片显示问题,直接用getIntrinsicWidth()方法获取,getIntrinsicWidth()获取的并非图片的实际宽度,在手机看还过得去,不会相差太远,但在平板电脑看, 它简直就是一个小女孩,太害羞了,以至于显示那么小. 回到正题: 解决方法: 1.获取手机分辨率 用该分辨率乘以其密度 if (file

android产品研发(四)--&gt;减小Apk大小

随着移动技术的深入发展,各种炫酷效果的更新,在我们追求UI与UE的同时一个不如忽视的问题逐渐暴露出来,那就是apk文件越来越大,可能有的童鞋会说现在都是wifi环境,apk文件增大几M不是什么大不了的问题,这其实也是有一定道理的,但是作为开发人员的我们这绝不是我们认为可以忽略这个问题的理由.优化Apk大小也是优化我们App体验的一个重要方面,虽然可能它不是那么的重要. 那么到底是那些原因让我们的Apk文件变得越来越大呢? 多屏幕是适配问题,移动设备的多样化导致了一个app需要N钟不同尺寸的设置,

Android - 总结Activity与Fragment打开的时候获取组件的大小

Activity中获取 组件大小 代码: @Override public void onWindowFocusChanged(boolean hasFocus) { // TODO Auto-generated method stub super.onWindowFocusChanged(hasFocus); Log.d("TAG", "A-button1-->"+button1); Log.d("TAG", "A-width-

Android动态方式破解apk终极篇(加固apk破解方式)

一.前言 今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为: 第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件 现在要说的就是最后一篇了,如何应对Android中一些加固apk安全防护,在之前的两篇破解文章中,我们可以看到一个是针对于Java层的破解,一个是针对于native层的破解,还没有涉及到apk的加固,那么今天就要来介绍一下如何应对现在市场中一些加固的apk的破解之道,现在市场中加固apk的方式一般就是两种:一种是对源apk整体做一

Android 无需root实现apk的静默安装

转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/50533137 Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFi