2016-12-26 113 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

相關問題