2012-08-15 69 views
0

我想通过提供应用程序名称来查找我的应用程序的包名称。下面的方法在Droid3上花费很长时间。我如何优化这个或者我错过了什么?检查设备上应用程序instaleld的列表并找到我的应用程序的软件包名称?

String      sPackageName  = null; 

    PackageManager   pm     = m_Context.getPackageManager(); 

//get a list of installed apps. 
    List<ApplicationInfo>  packages   = pm.getInstalledApplications(PackageManager.GET_META_DATA); 

    ApplicationInfo ap = new ApplicationInfo(); 
    ap.loadLabel(pm); 



    for (ApplicationInfo packageInfo : packages) { 

     String   sApp    = packageInfo.loadLabel(pm).toString(); 

     //Log.d(TAG, "Installed AppName = " + appName + " ,package :" + packageInfo.packageName); 
     //Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName)); 

     if(sApp.compareTo(sAppName) == 0){ 

      sPackageName = packageInfo.packageName; 
      break; 
     } 

    }// the getLaunchIntentForPackage 

    return sPackageName; 

感谢, DK

回答

0

你并不需要调用loadLabel()找到包的名字,从ApplicationInfoResolveInfo只得到packageName直接进行比较。

使用loadLabel()loadIcon()是非常费时的。

+0

感谢您的回复。在我的情况下,我有'应用程序名称',并基于此,我需要找出这个应用程序是否已经安装在设备上,如果是,然后提取'包名'。我如何用你的建议做到这一点? – codersnet 2012-08-15 17:51:02

相关问题