2016-12-26 15 views
0

私のコードは、最近インストールされたすべてのアプリケーションのリストを取得しますが、問題は、最新のパッケージ名(1つだけ)だけです。それを行うためにコードを変更するにはどうすればよいですか?最近インストールされたアプリの名前を取得する方法は?

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

関連する問題