studio programacion para libro edición desarrollo desarrollar cambiar aprende aplicaciones android

programacion - Cómo obtener el tiempo de instalación de la aplicación desde Android



manual de programacion android pdf (3)

En el nivel de API 9 (Gingerbread) y superior, está el campo PackageInfo.firstInstallTime , que contiene milisegundos desde la época:

packageManager.getPackageInfo(packageName, 0).firstInstallTime;

Tengo el siguiente código para usarlo si está disponible, y recurro al tiempo de modificación del apk:

// return install time from package manager, or apk file modification time, // or null if not found public Date getInstallTime( PackageManager packageManager, String packageName) { return firstNonNull( installTimeFromPackageManager(packageManager, packageName), apkUpdateTime(packageManager, packageName)); } private Date apkUpdateTime( PackageManager packageManager, String packageName) { try { ApplicationInfo info = packageManager.getApplicationInfo(packageName, 0); File apkFile = new File(info.sourceDir); return apkFile.exists() ? new Date(apkFile.lastModified()) : null; } catch (NameNotFoundException e) { return null; // package not found } } private Date installTimeFromPackageManager( PackageManager packageManager, String packageName) { // API level 9 and above have the "firstInstallTime" field. // Check for it with reflection and return if present. try { PackageInfo info = packageManager.getPackageInfo(packageName, 0); Field field = PackageInfo.class.getField("firstInstallTime"); long timestamp = field.getLong(info); return new Date(timestamp); } catch (NameNotFoundException e) { return null; // package not found } catch (IllegalAccessException e) { } catch (NoSuchFieldException e) { } catch (IllegalArgumentException e) { } catch (SecurityException e) { } // field wasn''t found return null; } private Date firstNonNull(Date... dates) { for (Date date : dates) if (date != null) return date; return null; }

Intento algún método, pero no éxito, ayúdame.


PackageInfo.firstInstallTime le da el tiempo de instalación en "Tiempo Unix" (el tiempo en milisegundos desde "la época" , es decir, el 1 de enero de 1970 00:00:00 UTC ). Puede usar java.util.Date o java.text.DateFormat para formatear este momento.

private static final String TAG = "MyActivity"; ... packageName = ... ... try { PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS); Date installTime = new Date( packageInfo.firstInstallTime ); Log.d(TAG, "Installed: " + installTime.toString()); Date updateTime = new Date( packageInfo.lastUpdateTime ); Log.d(TAG, "Updated: " + updateTime.toString()); } catch ( PackageManager.NameNotFoundException e ) { e.printStackTrace(); }

También puede cambiar el formato de fecha con java.text.SimpleDateFormat .

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String installTime = dateFormat.format( new Date( packageInfo.firstInstallTime ) ); Log.d(TAG, "Installed: " + installTime); String updateTime = dateFormat.format( new Date( packageInfo.lastUpdateTime ) ); Log.d(TAG, "Updated: " + updateTime);


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