Android 获取手机已安装的应用列表

计算机软件开发 2024-10-7 03:54:04 46 0 来自 中国
1、扫描已安装的应用列表
var queryIntentActivities = mutableListOf<ResolveInfo>()        val intent = Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER)        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {            queryIntentActivities =                packageManager.queryIntentActivities(intent, PackageManager.MATCH_ALL)        } else {            queryIntentActivities = packageManager.queryIntentActivities(intent, 0)        }上面代码中,queryIntentActivities  就是获取的应用列表数据,下面就直接通过遍历获取每个应用的信息了
queryIntentActivities.forEach {            bean = AppInfoBean(                icon = it.loadIcon(packageManager),                appName = it.loadLabel(packageManager).toString(),                appPackageName = it.activityInfo.applicationInfo.packageName            )            appBeanList.add(bean!!)        }上面 AppInfoBean 是本身界说的实体bean 内里有应用的名称,包名,尚有Drawable 范例的应用icon
appBeanList 是界说的list变量,
留意:这里提个醒,也是我碰到的一个小题目,在扫描所有应用的时间,Intent的action 是:Intent.ACTION_MAIN 牢记,否则一个也查不到,
尚有,大概你通过上面获取的应用列表只有几个,不全,此时,你须要添加一个权限:
<uses-permission        android:name="android.permission.QUERY_ALL_PACKAGES"        tools:ignore="QueryAllPackagesPermission" />有了上面这个权限,你才气获取到所有的应用
2、通过包名,查询对应应用的图标icon
    /**     * 根据应用包名,查应用的icon图     */    private fun loadAppIconByPackageName(packageName:String,listenericonrawable) -> Unit){        try {            if (packageManager == null){                packageManager = BaseApp.myApp.packageManager            }            val packageInfo = packageManager?.getPackageInfo(                packageName,                PackageManager.GET_ACTIVITIES            )            packageInfo?.applicationInfo?.loadIcon(packageManager)?.let { listener.invoke(it) }        } catch (e: Exception) {            listener.invoke(BaseApp.myApp.resources.getDrawable(R.mipmap.ic_launcher))        }    }这个就简朴了,获取当前的packageManager 就可以举行获取对应的icon了,不外这个跟上面获取应用一样,也须要权限和否则大概也会碰到扫描不到的题目哦。
3、通过包名获取对应应用的启动页的全类名
/**  * 通过包名获取app的入口activity  */ @SuppressLint("WrongConstant") fun getAppEnter(context: Context, packageName: String): String {     var mainAct = ""     try {         val intent = Intent().apply {             action = Intent.ACTION_MAIN             addCategory(Intent.CATEGORY_LAUNCHER)         }         val list =             context.packageManager.queryIntentActivities(intent, PackageManager.GET_ACTIVITIES)         list.forEach {             if (TextUtils.equals(it.activityInfo.packageName, packageName)) {                 mainAct = it.activityInfo.name             }         }     } catch (ex: Exception) {     } finally {         return mainAct     } }这个须要留意的事项和第一个获取应用列表一样,其他的都没什么须要留意的了。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-23 16:21, Processed in 0.179667 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表