android developer tiny share-20170522
来源:互联网 发布:韩素音翻译大赛 知乎 编辑:程序博客网 时间:2024/05/16 11:13
今天继续讲android的Calendar ContentProvider,讲查询日历。
以下是android developer官网的讲解:
查询日历
以下示例说明了如何获取特定用户拥有的日历。 为了简便起见,在此示例中,查询操作显示在用户界面线程(“主线程”)中。 实际上,此操作应该在一个异步线程而非主线程中完成。 如需查看更详细的介绍,请参阅加载器。 如果您的目的不只是读取数据,还要修改数据,请参阅 AsyncQueryHandler。
// Projection array. Creating indices for this array instead of doing// dynamic lookups improves performance.public static final String[] EVENT_PROJECTION = new String[] { Calendars._ID, // 0 Calendars.ACCOUNT_NAME, // 1 Calendars.CALENDAR_DISPLAY_NAME, // 2 Calendars.OWNER_ACCOUNT // 3};// The indices for the projection array above.private static final int PROJECTION_ID_INDEX = 0;private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;
在示例的下一部分,您需要构建查询。选定范围指定查询的条件。 在此示例中,查询寻找的是 ACCOUNT_NAME 为“sampleuser@google.com”、ACCOUNT_TYPE 为“com.google”、OWNER_ACCOUNT 为“sampleuser@google.com”的日历。如果您想查看用户查看过的所有日历,而不只是用户拥有的日历,请省略 OWNER_ACCOUNT。您可以利用查询返回的 Cursor 对象遍历数据库查询返回的结果集。 如需查看有关在内容提供程序中使用查询的详细介绍,请参阅内容提供程序。
// Run queryCursor cur = null;ContentResolver cr = getContentResolver();Uri uri = Calendars.CONTENT_URI;String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" + Calendars.ACCOUNT_TYPE + " = ?) AND (" + Calendars.OWNER_ACCOUNT + " = ?))";String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google", "sampleuser@gmail.com"};// Submit the query and get a Cursor object back.cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);
以下后续部分使用游标单步调试结果集。它使用在示例开头设置的常量来返回每个字段的值。
// Use the cursor to step through the returned recordswhile (cur.moveToNext()) { long calID = 0; String displayName = null; String accountName = null; String ownerName = null; // Get the field values calID = cur.getLong(PROJECTION_ID_INDEX); displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX); accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX); ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX); // Do something with the values... ...}
为何必须加入 ACCOUNT_TYPE?
如果您查询 Calendars.ACCOUNT_NAME,还必须将 Calendars.ACCOUNT_TYPE 加入选定范围。这是因为,对于给定帐户,只有在同时指定其 ACCOUNT_NAME 及其 ACCOUNT_TYPE 的情况下,才能将其视为唯一帐户。ACCOUNT_TYPE 字符串对应于在 AccountManager 处注册帐户时使用的帐户验证器。还有一种名为 ACCOUNT_TYPE_LOCAL 的特殊帐户类型,用于未关联设备帐户的日历。ACCOUNT_TYPE_LOCAL 帐户不会进行同步。
阅读全文
0 0
- android developer tiny share-20170522
- android developer tiny share-20160627
- android developer tiny share-20160628
- android developer tiny share-20160629
- android developer tiny share-20160630
- android developer tiny share-20160701
- android developer tiny share-20160704
- android developer tiny share-20160705
- android developer tiny share-20160706
- android developer tiny share-20160707
- android developer tiny share-20160708
- android developer tiny share-20160711
- android developer tiny share-20160712
- android developer tiny share-20160713
- android developer tiny share-20160714
- android developer tiny share-20160715
- android developer tiny share-20160718
- android developer tiny share-20160719
- 【知识杂项】2
- 如何在_Ubuntu_上使用_pm2_和_Nginx_部署_Node.js_应用
- React 事件 监听
- Dagger2教程四之多构造方法的情况(原)
- java正序排序
- android developer tiny share-20170522
- AndroidStudio安装kotlin插件
- 隐马尔可夫模型(HMM)攻略
- 阿里测试开发实习生面试
- PLSQL中Database怎么填
- JQ图片预加载(无序加载and有序加载)
- Linux vi全局替换方法
- Java web开发中的各种bean对应的术语(VO,PO,BO,QO, DAO,POJO,DTO)
- C++ 16进制和字符串批量转换