Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何存储android通知日期和时间?_Android_Notifications_Sharedpreferences - Fatal编程技术网

如何存储android通知日期和时间?

如何存储android通知日期和时间?,android,notifications,sharedpreferences,Android,Notifications,Sharedpreferences,目前,我已经创建和应用程序来存储SD卡中的音频文件。我会列出所有的音频文件到一个列表视图,当用户点击该项目,并设置该项目的日期和时间通知,它应该出现通知。我想问的问题是,我是否需要将此通知(日期和时间)存储到数据库中?如何将其存储在SD卡中?在Android中保存日期集合的最佳方法是将它们保存到。共享首选项使用键值关系,因此您可以使用音频文件的名称或ID作为键,将转换为毫秒的日期作为值 下面是一些示例代码,我创建了一个助手类,可以加载并保存到存储的首选项: public class Prefer

目前,我已经创建和应用程序来存储SD卡中的音频文件。我会列出所有的音频文件到一个列表视图,当用户点击该项目,并设置该项目的日期和时间通知,它应该出现通知。我想问的问题是,我是否需要将此通知(日期和时间)存储到数据库中?如何将其存储在SD卡中?

在Android中保存日期集合的最佳方法是将它们保存到。共享首选项使用键值关系,因此您可以使用音频文件的名称或ID作为键,将转换为毫秒的日期作为值

下面是一些示例代码,我创建了一个助手类,可以加载并保存到存储的首选项:

public class PreferenceUtil {

    public static void saveDateInMillis(Context context, String name, long value) {
        SharedPreferences sharedPreferences = context.getSharedPreferences("AppName", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putLong(name, value);
        editor.commit();
    }

    public static long loadDateInMillis(Context context, String name, long defualtValue) {
        SharedPreferences sharedPreferences = context.getSharedPreferences("AppName", Context.MODE_PRIVATE);
        return sharedPreferences.getLong(name, defualtValue);
    }
}
要使用该类,请执行以下操作:

    //Save a calendar object
    PreferenceUtil.saveDateInMillis(getActivity(), "audioID", Calendar.getInstance().getTimeInMillis());

    //Load a calendar object
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(PreferenceUtil.loadDateInMillis(getActivity(), "audioID", Calendar.getInstance().getTimeInMillis()));

更新:刚刚修复了代码中的几个小错误

您应该只使用共享首选项:这比仅为一组值实现和维护数据库容易得多。您有类似的示例吗?我通读了你提供的信息,但我仍然不明白它是如何在SharedReferences中存储日期和时间的。你提到的“AppName”是类名还是我的音频应用程序名?它是它为存储数据而创建的文件名,可以是任何你想要的。通常包和/或类名是合适的。我在一个列表中有许多音频文件,如果每个音频文件都有自己的提醒时间和日期,那么我如何在SharedRef中存储每个日期?上面的代码提到了“audioID”,但在我的文件中,我只通过列表的索引检测到它,我如何保存它?可以存储文件名,然后比较列表中的文件名以获得索引?它是字符串形式的唯一标识符。正如您所说,最好使用文件名作为密钥,前提是它始终是唯一的。现在我想到了将所有这些详细信息存储到SharedReference,但现在我不知道如何从SharedReference中获取值,以便将日期和时间与系统日期和时间相匹配。?