如何从android中的包名中获取类名?

Posted

技术标签:

【中文标题】如何从android中的包名中获取类名?【英文标题】:How to get class name from package name in android? 【发布时间】:2013-03-14 21:31:30 【问题描述】:

我想分别列出已安装和系统应用程序。下面是我的代码

List<ApplicationInfo> appList = packageManager.getInstalledApplications(0);
if(appList != null && !appList.isEmpty())
        for (ApplicationInfo appInfo : appList) 
        Intent intent = packageManager.getLaunchIntentForPackage(appInfo.packageName);
        if(intent != null)
            ComponentName componentName = intent.getComponent();
            if((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) 
                //It is a system app
            else
                //It is an installed app.
            
        
    

我想在点击 listview 时启动每个应用程序。但 componentName .getClassName() 对某些人显示为“com.android.internal.app.ResolverActivity”联系人、地图等应用程序...如何获得此类应用程序的确切类名。我无法使用 ResolveInfo,因为很难对应用程序进行分类。

如何使用包名获取应用程序的准确类名?

提前致谢

【问题讨论】:

我在运行 4.2.2 的 Galaxy Nexus 上运行了您的示例代码,但没有安装任何显示为 ResolverActivity 的应用程序。你能给我们多介绍一点背景吗?你在做什么?也许这不是您回答的直接途径...但是您让我很好奇为什么您会看到 ResolverActivity 而我没有。 我用的是 Galaxy Tab 2.2 【参考方案1】:

你可以问packageManager:

CharSequence label = "";
for (ApplicationInfo appInfo : appList)    
    label = packageManager.getApplicationLabel(appInfo);

【讨论】:

packageManager.getApplicationLabel() 返回应用的名称。我要获取类名

以上是关于如何从android中的包名中获取类名?的主要内容,如果未能解决你的问题,请参考以下文章

android 获取当前类的包名与类名

android 获取当前类的包名与类名

如何找到给定类名的包名?

Android 在Android手机上获取其他应用的包名及版本号

java怎么获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名

如何在Android中获取库的包名?