在 Android 上获取应用程序安装日期

有没有办法在 Android 设备上找到“应用程序安装日期”。

搜索了很多,但是没有找到相关的答案。

通过 PackageManager文档/代码安装应用程序时,无法找到任何有关 Date 的信息。

43632 次浏览

使用以下代码:

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

或者这个(空气污染指数级别9往上!) :

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

尝尝这个

/**
* 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;
}
}

此方法以字符串格式(如 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;
}

杂物

/**
* 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());
}

第一次安装的时候

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

最后一次更新

activity.getPackageManager().getPackageInfo( activity.getPackageName(), 0 ).lastUpdateTime;
public long getInstallDateInMilliseconds() {
long installDate;
try {
installDate = context.getPackageManager()
.getPackageInfo(context.getPackageName(),0)
.firstInstallTime;
} catch (PackageManager.NameNotFoundException e) {
installDate = Calendar.getInstance().getTimeInMillis();
}
return installDate;
}