Ответ 1
Вы можете получить последнее время доступа, используя stat
или lstat
. Два метода: android.system.Os.stat(String path)
и android.system.Os.lstat(String path)
, были обнародованы в Android 5.0. В предыдущих версиях Android вам нужно будет использовать отражение или запустить команду в оболочке.
Использование:
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
:
Если реализация файловой системы не поддерживает отметку времени для указания времени последнего доступа, то этот метод возвращает значение по умолчанию для конкретной реализации, обычно это последнее модифицированное время или FileTime, представляющие эпоху (1970-01-01T00: 00: 00Z).
Я тестировал изменение последнего времени доступа, используя следующую команду:
touch -a [PATH]
Это изменило последнее время доступа, когда я запускал команду в качестве пользователя root. Тем не менее, я не думаю, что последнее доступное время обновляется/используется на Android.