gpt4 book ai didi

java - 在 Android 上保存和恢复日历应用程序的数据

转载 作者:行者123 更新时间:2023-12-01 14:16:40 25 4
gpt4 key购买 nike

我正在编写一个使用 Android 内部日历的应用程序。该应用程序是一种针对特定目的的“议程”。

我需要能够用不同的颜色在日历上标记某一天标记了某些事件。我可以毫无问题地做到这一点,问题是,当我关闭应用程序时,我的日历 View 上的这些颜色会丢失。

所以我需要找到一种方法来存储已标记特定事件的日期的数据。我想到了两种方法:一种是将我的应用程序中标记的所有事件的数据保存到内部存储或 SQLite 数据库中,或者我考虑循环整个日历并查找哪些事件属于我的应用程序。在我看来,第二种方法非常慢,因为也很难定义循环的上限和下限。

有哪些建议?还有其他更好的方法吗?

最佳答案

如果您的应用独立于用户的日历事件,您可以创建一个 SyncAdapter(也需要 AccountAuthenticator),并将其注册以与 Android 同步日历的东西。然后,作为同步适配器,使用您想要的颜色创建一个新日历并将其标记为只读;将您的事件放在那里,它们将出现在用户可能使用的任何日历应用程序上。在您的应用中,只需查询日历中的事件,即可获取事件,无需额外过滤。

<小时/>

示例和文章:android doc about the calendar provider ,它描述了如何访问和修改日历和事件。您需要它来创建和填写您的日历。如果您的应用程序不需要身份验证,请参阅"Creating a Stub Authenticator" ,并通过编程方式创建帐户

Account account = new Account("static username, displayed to user", "your.type");
AccountManager.get(context).addAccountExplicitly(account, "", null);
ContentResolver.setSyncAutomatically(account, "com.android.calendar", true);

请记住使用单独的 xml 文件 (res/xml/yourname.xml) 注册您的同步适配器:

<?xml version="1.0" encoding="UTF-8"?>
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="com.android.calendar"
android:accountType="your.type"
android:userVisible="true"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"
android:supportsUploading="false"
/>

请注意,我添加了 isAlwaysSyncable;如果未设置该属性,则必须调用 ContentResolver.setIsSyncable 才能允许任何同步。

您还需要在 AndroidManifest.xml 中注册一个生成 SyncAdapter 的服务(就像使用 AccountAuthenticator 一样):

<service android:name=".package.classname" android:exported="true">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data android:name="android.content.SyncAdapter" android:resource="@xml/yourname" />
</service>
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<!-- when distributing an AccountAuthenticator this is also required: -->
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />

对于一般同步适配器的内容以及如何将其组合在一起,有一篇很棒的博客文章 "write your own Android Sync Adapter" .

关于java - 在 Android 上保存和恢复日历应用程序的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18067927/

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