Android ApplicationInfo 应用程序信息的详解
程序员文章站
2023-12-13 18:50:40
android applicationinfo 应用程序信息
1、简述
1 applicationinfo是android.content.pm包下的一个实体类...
android applicationinfo 应用程序信息
1、简述
1 applicationinfo是android.content.pm包下的一个实体类,用于封装应用的信息,flags是其中的一个成员变量public int flags = 0;用于保存应用的标志信息。 2 applicationinfo 通过它可以得到一个应用基本信息。 这些信息是从androidmanifest.xml的< application >标签获取的 3 applicationinfo对象里保存的信息都是<application>标签里的属性值 4 applicationinfo与resolveinfo比较:前者能够得到icon、label、meta-data、description。后者只能得到icon、label
2、获取applicationinfo
2.1 、获取手机上安装所有程序对应的 applicationinfo
/** * 获取手机上安装的所有的程序对应的 applicationinfo * 它是通过解析androidmanifest.xml的< application>标签中得到的,所以它能得到所有的app * * 获取手机上的所有的安装的应用程序信息 * 参数为 标识 一般为 packagemanager.get_uninstalled_packages */ list<applicationinfo> list = packagemanager.getinstalledapplications(packagemanager.get_uninstalled_packages);
2.2 、获取指定包名对应的 applicationinfo
/** * 获取指定应用程序 applicationinfo * 参数一对应应用程序的包名 * 参数二 应用程序对应的标识 通常为 0 */ applicationinfo applicationinfo = packagemanager.getapplicationinfo("com.androidlongs.contactsapplication", 0);
3、通过applicationinfo来获取应用程序的 基本信息
3.1 、获取应用程序对应的包名、应用名称
//获取应用图标 drawable drawable = applicationinfo.loadicon(packagemanager); //获取应用程序的 包名 string apppackagename = applicationinfo.packagename; //获取应用名 //参数 packagemanager 是应用管理者对象 string appname =applicationinfo.loadlabel(packagemanager).tostring();
3.2 、获取应用程序对应数据的目录以及占用的空间大小
//获取应用存放数据目录 string dir = applicationinfo.sourcedir; log.d("app ","应用存放数据目录 " +dir); //获取应用数据大小 ong length = new file(dir).length(); //转换为 m float size = length*1f/1024/1024; log.d("app ","应用数据大小 " +length+"\t"+size);
3.3 、判断是否安装在外置储存空间存
//判断是否安装在外存 int flags = applicationinfo.flags; if((flags&applicationinfo.flag_external_storage)==applicationinfo.flag_external_storage){ log.d("app "," 安装在 外置存储空间 "); }else { log.d("app "," 安装在 内置存储空间 "); }
3.4 、判断应用程序是否是系统应用
//判断是否是系统应用 if((flags&applicationinfo.flag_system)==applicationinfo.flag_system){ log.d("app "," 是系统应用 "); }else{ log.d("app "," 不是系统应用 "); }
3.5 、managespaceactivityname
/** * 从”android:managespaceactivity“属性得到 * 用于指定一个activity来管理数据, * 它最终会出现在设置->应用程序管理中, * 默认为按钮为”清除数据”,指定此属性后,该按钮可点击跳转到该activity, 让用户选择性清除哪些数据。若不设置则为null. */ string activityname = applicationinfo.managespaceactivityname; log.i("applicationinfo", "activityname: " + activityname);
3.6 、获取应用程序运行的进程
/** * 从”android:process“属性得到,注明应用运行的进程名。或不设置则默认为应用包名。 */ string processname = applicationinfo.processname; log.i("applicationinfo", "processname: " + processname);
3.7 、其他配置信息简述
// 配置文件中的android:backupagent属性值,用于备份 string backupagentname = applicationinfo.backupagentname; log.i("applicationinfo", "backupagentname: " + backupagentname); // 获取继承application类的对象,维护全局的application状态 //但一般都不用继承的方式,可以通过context.getapplicationcontext()方法得到 string classname = applicationinfo.classname; log.i("applicationinfo", "classname: " + classname); /** * 可选项,访问当前应用所有组件需要声明的权限,从”android:permission“属性得到。 */ string permisson = applicationinfo.permission; log.i("applicationinfo", "permisson: " + permisson); // 创建对象时,传入的是get_shared_library_files该属性才有值 string[] files = applicationinfo.sharedlibraryfiles; log.i("applicationinfo", "files: " + files); // 存放数据的路径 应用数据目录。 string datapath = applicationinfo.datadir; log.i("applicationinfo", "datapath: " + datapath); // 本地路径 jni本地库存放路径。 string nativepath = applicationinfo.nativelibrarydir; log.i("applicationinfo", "nativepath:" + nativepath); // 公共资源路径 string punlicsourcepath = applicationinfo.publicsourcedir; log.i("applicationinfo", "punlicsourcepath: " + punlicsourcepath); // 资源路径 应用apk的全路径 string sourcepath = applicationinfo.sourcedir; log.i("applicationinfo", "sourcepath: " + sourcepath); /** * 当前应用所有activity的默认task密切性。 * 可以参考activityinfo的taskaffinity,从”android:taskaffinity“属性得到。 * 具体taskaffinity是怎么影响到activity在task的启动, 后面会在activity启动模式中细讲 */ string taskaffinity = applicationinfo.taskaffinity; log.i("applicationinfo", "taskaffinity: " + taskaffinity); // 如果是false,代表application里的所有组件都禁用 boolean enable = applicationinfo.enabled; log.i("applicationinfo", "enable: " + enable); // 表述资源文件的标识 int descrires = applicationinfo.descriptionres; log.i("applicationinfo", "descrires: " + descrires); int flag = applicationinfo.flags; log.i("applicationinfo", "flag: " + flag); // 指定smallest screen width的值,超过这个值,就要开启屏幕兼容 int compatiblewidth = applicationinfo.compatiblewidthlimitdp;//android:compatiblewidthlimitdp属性 log.i("applicationinfo", "compatiblewidth: " + compatiblewidth); // 同上,只是这时候用户无法禁止屏幕兼容模式,说明是强制启动屏幕兼容 int largestwidth = applicationinfo.largestwidthlimitdp;//android:largestwidthlimitdp属性 log.i("applicationinfo", "largestwidth: " + largestwidth); // 所需屏幕空间的最短尺寸, int samllestwidth = applicationinfo.requiressmallestwidthdp;//android:requiressmallestwidthdp属性 log.i("applicationinfo", "samllestwidth: " + samllestwidth); // 应用所需的最小sdk版本 int sdkversion = applicationinfo.targetsdkversion; log.i("applicationinfo", "sdkversion: " + sdkversion); int theme = applicationinfo.theme; log.i("applicationinfo", "theme: " + theme);//android:theme= int uid = applicationinfo.uid; log.i("applicationinfo", "uid: " + uid); // 配置文件中的uioptions属性的值 int uioptions = applicationinfo.uioptions; log.i("applicationinfo", "uioptions: " + uioptions);
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!