web-dev-qa-db-fra.com

Obtenir la date d'installation de l'application sur Android

Existe-t-il un moyen de connaître la "date à laquelle une application a été installée" sur un appareil Android. 

J'ai beaucoup cherché, mais je suis incapable de trouver une réponse pertinente.

Impossible de trouver quoi que ce soit concernant la date d'installation de l'application dans la documentation/le code de PackageManager.

Merci beaucoup . Mahim.

58
mahim

ou celui-ci ( API Niveau 9 à la hausse!): 

long installed = context
    .getPackageManager()
    .getPackageInfo(context.getPackag‌​eName(), 0)
    .firstInstallTime
;
113
Martin Matysiak

Utilisez ce code:

PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo("app.package.name", 0);
String appFile = appInfo.sourceDir;
long installed = new File(appFile).lastModified();
22
Sunil Pandey

Essayez un de ces

/**
 * The time at which the app was first installed. Units are as per currentTimeMillis().
 * @param context
 * @return
 */
public static long getAppFirstInstallTime(Context context){
    PackageInfo packageInfo;
    try {
    if(Build.VERSION.SDK_INT>8/*Build.VERSION_CODES.FROYO*/ ){
        packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
        return packageInfo.firstInstallTime;
    }else{
        //firstinstalltime unsupported return last update time not first install time
        ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), 0);
        String sAppFile = appInfo.sourceDir;
        return new File(sAppFile).lastModified();
    }
    } catch (NameNotFoundException e) {
    //should never happen
    return 0;
    }
}
7
guyland123

Première fois il a été installé

activity.getPackageManager().getPackageInfo( activity.getPackageName(), 0 ).firstInstallTime;

Dernière mise à jour

activity.getPackageManager().getPackageInfo( activity.getPackageName(), 0 ).lastUpdateTime;
3
Joshua Pinter

Cette méthode renvoie la date de l'installation au format String comme 12/25/2016 10:38:02:

  private String getInstallDate() {
        // get app installation date

        PackageManager packageManager =  getActivity().getPackageManager();
        long installTimeInMilliseconds; // install time is conveniently provided in milliseconds

        Date installDate = null;
        String installDateString = null;

        try {
            PackageInfo packageInfo = packageManager.getPackageInfo(getActivity().getPackageName(), 0);
            installTimeInMilliseconds = packageInfo.firstInstallTime;
            installDateString  = MiscUtilities.getDate(installTimeInMilliseconds, "MM/dd/yyyy hh:mm:ss");
        }
        catch (PackageManager.NameNotFoundException e) {
            // an error occurred, so display the Unix Epoch
            installDate = new Date(0);
            installDateString = installDate.toString();
        }

        return installDateString;
    }

Divers utilitaires

/**
 * Return date in specified format.
 *
 * @param milliSeconds Date in milliseconds
 * @param dateFormat   Date format
 * @return String representing date in specified format
 * <p>
 * Date myDate = MiscUtilities.getDate(82233213123L, "dd/MM/yyyy hh:mm:ss.SSS");
 */
public static String getDate(long milliSeconds, String dateFormat) {
    // Create a DateFormatter object for displaying date in specified format.
    SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);

    // Create a calendar object that will convert the date and time value in milliseconds to date.
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(milliSeconds);
    return formatter.format(calendar.getTime());
}
0
Al Lelopath