2016-12-26 81 views
0

我的代码获取所有最近安装的应用程序的列表,但问题是,我只想要最近的软件包名称(只有一个)。我如何修改我的代码来做到这一点?如何获取最近安装的应用程序的名称?

public void RootInstallAPK1(View view) { 
    final PackageManager pm = getPackageManager(); 
    List<ApplicationInfo> packages = pm 
      .getInstalledApplications(PackageManager.GET_META_DATA); 

    for (ApplicationInfo packageInfo : packages) { 
     String packageName = packageInfo.packageName; 
     String appFile = packageInfo.sourceDir; 
     long lastModified = new File(appFile).lastModified(); 
     // Use this to get first time install time 
     // long installed = 
     // context.getPackageManager().getPackageInfo(packageName, 
     // 0).firstInstallTime; 
     Log.d(TAG, "Installed package :" + packageName); 
     Log.d(TAG, "Source dir : " + appFile); 
     Log.d(TAG, "Last Modified Time :" + lastModified); 

     Toast toast = Toast.makeText(this, packageName, Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 

回答

0

您已经循环安装所有设备,并获取最后修改日期,从这里可以看出这很简单。

long newestInstall = 0; 
ApplicationInfo newestApp; 

for (ApplicationInfo packageInfo : packages) { 

    String appFile = packageInfo.sourceDir; 
    long lastModified = new File(appFile).lastModified(); 

    // check if this is newer then what we already have 
    if (lastModified > newestInstall) { 

     newestInstall = lastModified; 
     newestApp = packageInfo; 
    } 
} 

// print the newest app to the log 
Log.d(TAG, "Newest App :" + newestApp.packageName); 

通过所有已安装的软件包这将循环,并不断更新newestTimenewestApp,对于每一个应用程序,是新的,那么最后。

一旦循环完成,您将留下最近安装的应用程序。

+0

它充满了错误,请编辑您的代码 – user7341102

+0

这是有点伪代码,你应该能够弄清楚。我正在展示/解释您应该使用的过程。 –

+0

我不明白 – user7341102

相关问题