gpt4 book ai didi

android - Android 中任何文件的上次访问时间

转载 作者:可可西里 更新时间:2023-11-01 19:05:48 27 4
gpt4 key购买 nike

file.lastModified() 返回最后修改日期。文件似乎没有任何方法来获取上次访问日期。有没有办法以编程方式获取 android 中任何文件的最后访问日期/时间?

最佳答案

您可以使用 stat 获取上次访问时间或 lstat .这两种方法,android.system.Os.stat(String path)android.system.Os.lstat(String path) , 在 Android 5.0 中公开。在以前的 Android 版本中,您需要使用反射或在 shell 中运行命令。

用法:

Android 5.0+

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

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);

注意事项:

我认为 Android 上不会使用上次访问时间。来自 java.nio 文档:

If the file system implementation does not support a time stamp to indicate the time of last access then this method returns an implementation specific default value, typically the last-modified-time or a FileTime representing the epoch (1970-01-01T00:00:00Z).

我测试了使用以下命令更改上次访问时间:

touch -a [PATH]

当我以 root 用户身份运行命令时,这确实改变了上次访问时间。但是,我认为上次访问时间不会在 Android 上更新/使用。

关于android - Android 中任何文件的上次访问时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37409730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com