关于Ebuka Rufus Onuchukwu保存应用代码的时间存储及Android外部存储检测问题
问题1:如何使用Ebuka Rufus Onuchukwu的代码在保存应用中实现时间存储功能?
由于未提供Ebuka Rufus Onuchukwu代码的具体实现,这里基于Android常见的持久化方案,给出适配时间存储的通用步骤:
- 若代码基于SharedPreferences:
- 复用代码中已有的SharedPreferences实例
- 执行保存操作时,追加存储当前时间戳:
sp.edit().putLong("last_save_time", System.currentTimeMillis()).apply(); - 读取时间时,取出时间戳并转换为可读格式:
long saveTime = sp.getLong("last_save_time", 0); String timeStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) .format(new Date(saveTime));
- 若代码基于文件存储:
- 写入文件内容时,将格式化后的时间附加到内容开头或结尾:
String content = "保存时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(new Date()) + "\n" + yourData; // 沿用原代码中的文件写入逻辑写入content
- 写入文件内容时,将格式化后的时间附加到内容开头或结尾:
- 若代码基于Room数据库:
- 在数据实体类中添加时间字段:
@ColumnInfo(name = "save_time") private long saveTime; - 插入数据时设置当前时间戳:
yourEntity.setSaveTime(System.currentTimeMillis()); // 调用原代码中的DAO插入方法
- 在数据实体类中添加时间字段:
问题2:判断以下Android代码是否能够检测外部存储?
Does the code below detect external storage on android ?
private static boolean isExternalStorageAvailable() { String extStorageState = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(extStorageState)) { return true; } return false; }
这段代码可以检测外部存储是否处于「已挂载且可读写」的状态,但需注意:
Environment.MEDIA_MOUNTED是Android官方定义的状态常量,代表外部存储已正常挂载,且应用具备读写权限- 从Android 10(API 29)开始,系统启用Scoped Storage,即使该方法返回true,应用也无法直接访问外部存储的公共目录(如Downloads、Pictures),需通过MediaStore或存储访问框架(SAF)操作
- 若仅需检测外部存储是否存在(不管是否可写),可改用
Environment.MEDIA_MOUNTED_READ_ONLY做判断,但该场景需求较少
内容的提问来源于stack exchange,提问作者E R
相关产品推荐
相关产品推荐

