Android实现获取应用程序相关信息列表的方法
2023-06-13 09:15:39 时间
本文所述为Androdi获取手机应用列表的方法,比如获取到Android应用的软件属性、大小和应用程序路径、应用名称等,获取所有已安装的Android应用列表,包括那些卸载了的,但没有清除数据的应用程序,同时在获取到应用信息的时候,判断是不是系统的应用程序,这是一个应用管理器所必需具备的功能。
具体实现代码如下:
//AppInfoProvider.java packagecom.xh.ui; importjava.util.ArrayList; importjava.util.List; importandroid.content.Context; importandroid.content.pm.ApplicationInfo; importandroid.content.pm.PackageInfo; importandroid.content.pm.PackageManager; importandroid.graphics.drawable.Drawable; /** *类名称:AppInfoProvider *类描述:获取应用程序的相关信息 *创建人:LXH */ publicclassAppInfoProvider{ privatePackageManagerpackageManager; //获取一个包管理器 publicAppInfoProvider(Contextcontext){ packageManager=context.getPackageManager(); } /** *获取系统中所有应用信息, *并将应用软件信息保存到list列表中。 **/ publicList<AppInfo>getAllApps(){ List<AppInfo>list=newArrayList<AppInfo>(); AppInfomyAppInfo; //获取到所有安装了的应用程序的信息,包括那些卸载了的,但没有清除数据的应用程序 List<PackageInfo>packageInfos=packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); for(PackageInfoinfo:packageInfos){ myAppInfo=newAppInfo(); //拿到包名 StringpackageName=info.packageName; //拿到应用程序的信息 ApplicationInfoappInfo=info.applicationInfo; //拿到应用程序的图标 Drawableicon=appInfo.loadIcon(packageManager); //拿到应用程序的大小 //longcodesize=packageStats.codeSize; //Log.i("info","-->"+codesize); //拿到应用程序的程序名 StringappName=appInfo.loadLabel(packageManager).toString(); myAppInfo.setPackageName(packageName); myAppInfo.setAppName(appName); myAppInfo.setIcon(icon); if(filterApp(appInfo)){ myAppInfo.setSystemApp(false); }else{ myAppInfo.setSystemApp(true); } list.add(myAppInfo); } returnlist; } /** *判断某一个应用程序是不是系统的应用程序, *如果是返回true,否则返回false。 */ publicbooleanfilterApp(ApplicationInfoinfo){ //有些系统应用是可以更新的,如果用户自己下载了一个系统的应用来更新了原来的,它还是系统应用,这个就是判断这种情况的 if((info.flags&ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)!=0){ returntrue; }elseif((info.flags&ApplicationInfo.FLAG_SYSTEM)==0){//判断是不是系统应用 returntrue; } returnfalse; } }
与实例相关的Java类如下:
//AppInfo.java packagecom.xh.ui; importandroid.graphics.drawable.Drawable; /** *类名称:AppInfo *类描述:应用程序类,包括了程序相关属性 *创建人:LXH */ publicclassAppInfo{ privateDrawableicon; privateStringappName; privateStringpackageName; privatebooleanisSystemApp; privatelongcodesize; publiclonggetCodesize(){ returncodesize; } publicvoidsetCodesize(longcodesize){ this.codesize=codesize; } publicDrawablegetIcon(){ returnicon; } publicvoidsetIcon(Drawableicon){ this.icon=icon; } publicStringgetAppName(){ returnappName; } publicvoidsetAppName(StringappName){ this.appName=appName; } publicStringgetPackageName(){ returnpackageName; } publicvoidsetPackageName(StringpackageName){ this.packageName=packageName; } publicbooleanisSystemApp(){ returnisSystemApp; } publicvoidsetSystemApp(booleanisSystemApp){ this.isSystemApp=isSystemApp; } }
实例中配有详尽的注释,读者可以在理解程序功能的基础上根据自身项目需求加以改进和完善。
相关文章
- android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]
- strictmode android,Android 应用性能优化-StrictMode(严格模式)
- android 混淆不起作用,Android代码混淆的写法总结
- strictmode android,(十三)Android 性能优化 StrictMode
- android定时器取消,Android定时器崩溃取消
- android定时器开发[通俗易懂]
- Android中的shell循环命令
- Android resource linking failed_android:authorities
- Android audio_audiomack安卓版下载
- Android preference_android studio preview
- Android触摸事件_android设置按钮点击事件
- Android 编译_android线程
- Android n_android 反编译
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- Android SDK Tools_android.intent.category.DEFAULT
- Android中的DatePicker颜色处理以及其他属性介绍
- 【Android 应用开发】View 与 SurfaceView 区别
- 【Android 组件化】使用 Gradle 实现组件化 ( 组件 / 集成模式下的 Library Module 开发 )
- 【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )
- 【Android Gradle 插件】Extension 扩展类型 ( Module 引入插件类型 | application 插件 | library 插件 | Variants 变体列表 )
- 【Google Play】Android 应用隐私政策 ( 生成隐私政策 | HTML 隐私政策模板 | Markdown 隐私政策模板 )
- 【错误记录】Android Studio 中编写 Gradle 编译脚本时没有 Groovy 代码提示 ( Cannot find declaration to go to )
- 【Android UI】贝塞尔曲线 ④ ( 使用 android.graphics.Path 提供的 cubicTo 方法绘制三阶贝塞尔曲线示例 )
- [android] 短信的广播接收者详解手机开发
- android最新更新方法详解手机开发
- android异步操作详解手机开发
- Connecting Android to Oracle: The Ultimate Guide for Seamless Integration.(android连接oracle)
- Android列表实现(2)_游标列表案例讲解
- android开发教程之使用listview显示qq联系人列表