Tiempo de acceso pasado de cualquier archivo de Android

file.lastModified() devuelve la fecha de la última modificación. El archivo no parece tener ningún método para obtener la fecha de lastAccessed. ¿Hay una manera de buscar mediante programación la última fecha / hora de acceso de cualquier archivo en android?

Puede obtener el último tiempo de acceso utilizando stat o lstat . Los dos métodos, android.system.Os.stat(String path) y android.system.Os.lstat(String path) , se hicieron públicos en Android 5.0. En versiones anteriores de Android necesitará usar reflexión o ejecutar un comando en un shell.

Uso:

Android 5.0+

 long lastAccessTime = Os.lstat(file.getAbsolutePath()).st_atime; 

Uso de la reflexión antes de Android 5.0

 Class<?> clazz = Class.forName("libcore.io.Libcore"); Field field = clazz.getDeclaredField("os"); if (!field.isAccessible()) { field.setAccessible(true); } Object os = field.get(null); Method method = os.getClass().getMethod("lstat", String.class); Object lstat = method.invoke(os, file.getAbsolutePath()); field = lstat.getClass().getDeclaredField("st_atime"); if (!field.isAccessible()) { field.setAccessible(true); } long lastAccessTime = field.getLong(lstat); 

Nota:

No creo que se utilice el último acceso en Android. De la documentación de java.nio :

Si la implementación del sistema de archivos no admite una marca de tiempo para indicar la hora del último acceso, entonces este método devuelve un valor predeterminado específico de implementación, normalmente el último tiempo de modificación o un FileTime que representa la época (1970-01-01T00: 00: 00Z).

He probado cambiar el último tiempo de acceso usando el siguiente comando:

 touch -a [PATH] 

Esto cambió el último tiempo de acceso cuando ejecuté el comando como el usuario root. Sin embargo, no creo que se haya actualizado / utilizado el último tiempo de acceso en Android.

Tuve el mismo problema y me encontré con este archivo I / O (con NIO.2)

Proporciona la propiedad Last Access Time que se introdujo en el mecanismo de E / S de liberación de JDK 7.

 Path file = ...; BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class); System.out.println("creationTime: " + attr.creationTime()); System.out.println("lastAccessTime: " + attr.lastAccessTime()); System.out.println("lastModifiedTime: " + attr.lastModifiedTime()); 

Más información se puede encontrar aquí .

Prueba esto:

 javaxt.io.File file = new javaxt.io.File("file-path"); file.getLastAccessTime(); 

última modificación ()

 import java.io.File; import java.util.Date; public class FileExample { public static void main(String[] args) { File f = null; String path; long millisec; boolean bool = false; try{ f = new File("c:/demo.txt"); bool = f.exists(); if(bool) { millisec = f.lastModified(); // date and time Date dt = new Date(millisec); // path path = f.getPath(); System.out.print(path+" last modified at: "+dt); } }catch(Exception e){ e.printStackTrace(); } } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.