1

我正在编写一个代码,以便从手机上最后安装的应用程序提取包名称,应用程序名称和图标。我可以从应用程序信息中获取应用程序的通用名称和图标,但似乎无法弄清楚如何获取程序包名称。我发现所有能够获取包名称的代码都提供了我的应用程序包名称,而不是上次安装的应用程序。提取我手机上最后安装的应用程序的包名称

看来我需要找到一个方法来获取包名称,在那里我可以传递应用程序信息作为参数(就像我为应用程序的通用名称和图标所做的那样)。

final PackageManager pm = context.getPackageManager(); 
ApplicationInfo ai; 
try { 


ai = pm.getApplicationInfo(intent.getData().getSchemeSpecificPart(), 0); 
Log.d("tag_name","Application Info" + ai); 


PACKAGE_NAME = context.getApplicationContext().getPackageName(); 
Log.d("tag_name","Package Name" + PACKAGE_NAME); 



} catch (final PackageManager.NameNotFoundException e) { 
ai = null; 
} 


final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)"); 
Log.d("tag_name", "Application NAME" + applicationName); 



// http://www.carbonrider.com/2016/01/01/extract-app-icon-in-android/ 

try { 

Drawable icon = context.getPackageManager().getApplicationIcon(ai); 
Log.d("tag_name", "ICON" + icon);} 
catch (Exception e){} 

回答

2

首先接收所有应用程序使用此代码:

List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET_META_DATA); 

然后排序与此代码软件包列表:

Collections.sort(packages, new Comparator<PackageInfo>() { 
       @Override 
       public int compare(PackageInfo p1, PackageInfo p2) { 
        return Long.toString(p2.firstInstallTime).compareTo(Long.toString(p1.firstInstallTime)); 
       } 
      }); 

然后你就可以收到最新安装的应用的应用包名称这样:

packages.get(0).packageName 
+0

非常感谢!这工作:) –

相关问题