在Application中显示Android application.apk创builddate

我正在开发一个Android应用程序,我想要显示.apk的版本和date现在我可以使用PackageInfo显示应用程序的应用程序版本,现在我想显示应用程序创build或.apk创builddate的date。

Solutions Collecting From Web of "在Application中显示Android application.apk创builddate"

检查classes.dex最后修改date的方法,这意味着上次应用程序的代码生成时:

  try{ ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), 0); ZipFile zf = new ZipFile(ai.sourceDir); ZipEntry ze = zf.getEntry("classes.dex"); long time = ze.getTime(); String s = SimpleDateFormat.getInstance().format(new java.util.Date(time)); }catch(Exception e){ } 

对于新读者来说:

 public static String getAppTimeStamp(Context context) { String timeStamp = ""; try { ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), 0); String appFile = appInfo.sourceDir; long time = new File(appFile).lastModified(); SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); timeStamp = formatter.format(time); } catch (Exception e) { } return timeStamp; } 

https://stackoverflow.com/a/2832419/1968592

我使用与Irshad Khan和Pointer Null相同的策略,除了我更喜欢MANIFEST.MF文件。 即使布局被修改(这不是classes.dex的情况),这个被重新生成。 我也强制在格林尼治标准时间格式化,以避免混淆terminal和服务器TZs(如果比较必须作出,例如:检查最新版本)。

它导致以下代码:

  try{ ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), 0); ZipFile zf = new ZipFile(ai.sourceDir); ZipEntry ze = zf.getEntry("META-INF/MANIFEST.MF"); long time = ze.getTime(); SimpleDateFormat formatter = (SimpleDateFormat) SimpleDateFormat.getInstance(); formatter.setTimeZone(TimeZone.getTimeZone("gmt")); String s = formatter.format(new java.util.Date(time)); zf.close(); }catch(Exception e){ }