Android:系统日历添加默认账户
@@ -190,9 +191,47 @@ public class AllInOneActivity extends AbstractCalendarActivity implements EventH
}
}; + // XBH add patch start :
+ private void setDefaultAccount(ContentResolver cr) {
+ Log.d(TAG, "Set default account");
+ TimeZone timeZone = TimeZone.getDefault();
+ ContentValues value = new ContentValues();
+ value.put(Calendars.NAME, "XBH");
+
+ value.put(Calendars.ACCOUNT_NAME, "xbhgmailaddress@gmail.com");
+ value.put(Calendars.ACCOUNT_TYPE, "com.android.exchange");
+ value.put(Calendars.CALENDAR_DISPLAY_NAME, "XBH");
+ value.put(Calendars.VISIBLE, 1);
+ value.put(Calendars.CALENDAR_COLOR, -9206951);
+ value.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER);
+ value.put(Calendars.SYNC_EVENTS, 1);
+ value.put(Calendars.CALENDAR_TIME_ZONE, timeZone.getID());
+ value.put(Calendars.OWNER_ACCOUNT, "xbhgmailaddress@gmail.com");
+ value.put(Calendars.CAN_ORGANIZER_RESPOND, 0);
+
+ Uri calendarUri = Calendars.CONTENT_URI;
+ calendarUri = calendarUri.buildUpon()
+ .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
+ .appendQueryParameter(Calendars.ACCOUNT_NAME, "xbhgmailaddress@gmail.com")
+ .appendQueryParameter(Calendars.ACCOUNT_TYPE, "com.android.exchange")
+ .build();
+
+ cr.insert(calendarUri, value);
+ }
+ // XBH add patch end.
+
private class QueryHandler extends AsyncQueryHandler {
public QueryHandler(ContentResolver cr) {
super(cr);
+ // XBH add patch start :
+ Cursor userCursor = cr.query(Calendars.CONTENT_URI, null, null, null, null);
+ if(userCursor != null && userCursor.getCount() == 0) {
+ //setDefaultAccount(cr);
+ Log.d(TAG, "userCursor.getCount() == 0");
+
+ }
+ Log.d(TAG, "userCursor.getCount()" + userCursor.getCount());
+ // XBH add patch end.
}
\packages\providers\CalendarProvider\src\com\android\providers\calendar\CalendarDatabaseHelper.java
private void insertAccount(SQLiteDatabase db) {
Log.d(TAG, "insertAccount");
TimeZone timeZone = TimeZone.getDefault();
ContentValues value = new ContentValues();
value.put(Calendars.NAME, "XBH11");
value.put(Calendars.ACCOUNT_NAME, "xbhgmailaddress@gmail.com");
Log.i(TAG, "Calendars.ACCOUNT_NAME = " + Calendars.ACCOUNT_NAME);
value.put(Calendars.ACCOUNT_TYPE, "com.android.xbh.tv");
Log.i(TAG, "Calendars.ACCOUNT_TYPE = " + Calendars.ACCOUNT_TYPE);
value.put(Calendars.CALENDAR_DISPLAY_NAME, "XBH");
Log.i(TAG, "Calendars.CALENDAR_DISPLAY_NAME = " + Calendars.CALENDAR_DISPLAY_NAME);
value.put(Calendars.VISIBLE, 1);
Log.i(TAG, "Calendars.VISIBLE = " + Calendars.VISIBLE);
value.put(Calendars.CALENDAR_COLOR, -9206951);
Log.i(TAG, "Calendars.CALENDAR_COLOR = " + Calendars.CALENDAR_COLOR);
value.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER);
Log.i(TAG, "Calendars.CALENDAR_ACCESS_LEVEL = " + Calendars.CALENDAR_ACCESS_LEVEL);
value.put(Calendars.SYNC_EVENTS, 1);
Log.i(TAG, "Calendars.SYNC_EVENTS = " + Calendars.SYNC_EVENTS);
value.put(Calendars.CALENDAR_TIME_ZONE, timeZone.getID());
Log.i(TAG, "timeZone.getID() = " + timeZone.getID());
value.put(Calendars.OWNER_ACCOUNT, "xbhgmailaddress@gmail.com");
Log.i(TAG, "Calendars.OWNER_ACCOUNT = " + Calendars.OWNER_ACCOUNT);
value.put(Calendars.CAN_ORGANIZER_RESPOND, 0);
Log.i(TAG, "Calendars.CAN_ORGANIZER_RESPOND = " + Calendars.CAN_ORGANIZER_RESPOND); db.insert("Calendars", null, value);
}
或者
//begin : added by xxx for calendar demand
private void updateOrInsert(SQLiteDatabase db, String table){
// check this value exsist or not.
String account_name = "Phone";
String account_type = "com.android.huawei.phone";
String calendar_displayName = "Phone";
Integer calendar_color = -12011288;
Integer calendar_access_level = 700;
Integer sync_events = 1;
String calendar_timeZone = "Asia/shanghai";
String ownerAccount = "Phone";
String[] columns = new String[]{"account_name","account_type"," calendar_displayName"};
String selection = " account_name=? and account_type=? and calendar_displayName=? ";
String[] selectionArgs = new String[]{account_name,account_type,calendar_displayName};
boolean alreadyExisted = false; // Cursor cursor = db.query(table, columns, selection, selectionArgs, null, null, null);
Cursor cursor = db.query(table, columns, selection, selectionArgs, null, null, null);
alreadyExisted = (null != cursor) && (cursor.getCount() > 0); /*
* an update statement like this:
* UPDATE secure SET value='com.android.inputmethod.latin/.LatinIME' where name='default_input_method'
* an insert statement like this:
* INSERT INTO secure(name,value) values('default_input_method','com.android.inputmethod.latin/.LatinIME')
*/
String stmt_update = "UPDATE "+table+" SET account_name='" + account_name + "'"+"calendar_displayName='"+ calendar_displayName +"'" + "where account_type='" + account_type + "'";
String stmt_insert = "INSERT INTO "+table+"(account_name,account_type,calendar_displayName,calendar_color,calendar_access_level,sync_events,calendar_timeZone,ownerAccount) values('" +
account_name + "','" + account_type + "','"+calendar_displayName + "','" + calendar_color + "','" + calendar_access_level + "','" + sync_events + "','" + calendar_timeZone + "','" + ownerAccount+ "')";
String stmt = alreadyExisted ? stmt_update : stmt_insert;
db.execSQL(stmt);
}
//end : added by xxx for calendar demand
private void bootstrapDB(SQLiteDatabase db) {
Log.i(TAG, "Bootstrapping database"); mSyncState.createDatabase(db); createColorsTable(db); createCalendarsTable(db); updateOrInsert(db,"Calendars");
......
}
\packages\providers\CalendarProvider\src\com\android\providers\calendar\CalendarProvider2.java
if ((!validAccounts.contains(currAccount)) &&
(!c.getString(1).equalsIgnoreCase("com.android.xbh.tv"))) {
accountsToDelete.add(currAccount);
}
Android:系统日历添加默认账户的更多相关文章
- Android向系统日历添加日程提醒事件
在项目开发过程中,有时会有预约提醒.定时提醒等需求,这时我们可以使用系统日历来辅助提醒.通过向系统日历中写入事件.设置提醒方式(闹钟),实现到达某个特定的时间自动提醒的功能.这样做的好处是由于提醒功能 ...
- 在Android系统中添加宏控制代码【原创】
关键词:Android 宏控制 Androd.mk 平台信息:内核:linux3.4.39 系统:android/android5.1平台:S5P4418 作者:庄泽彬(欢迎转载,请注明作者) 邮 ...
- Android 向系统日历中添加事件
查了一天半,总算有点大概了.以下是自己的理解,有错误的地方望指正. android系统有日历功能,应用程序可以根据一些接口开发自己的功能,即使是日历app也是根据这些接口开发的,所以我们可以利用程序向 ...
- 通过settings.db自定义Android系统默认设置
Android的系统设置数据存放在/data/data/com.android.providers.settings/databases/settings.db 中 数据库结构如下: 数据库中的默认数 ...
- phonegap之android原生日历调用
android日历调用首先第一步我们要添加权限 <uses-permission android:name="android.permission.READ_CALENDAR" ...
- 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)
第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...
- Android系统中设置TextView的行间距(非行高)
Android系统中TextView默认显示中文时会比较紧凑,不是很美观.为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacin ...
- Android系统固件定制方式
target_product.mkAndroid系统在构建关于某种产品的固件时,一般会根据特定于该产品的具体target_product.mk来配置生成整个Android系统./target_prod ...
- Android向系统日历中添加日程事件
转自Android向系统日历中添加日程事件 总结 在项目开发中,我们有预约提醒.定时提醒需求时,可以使用系统日历来辅助提醒: 通过向系统日历中写入事件.设置提醒方式(闹钟),实现到时间自动提醒的功能: ...
随机推荐
- Flutter——Drawer、DrawerHeader、UserAccountsDrawerHeader组件(侧边栏组件)
在 Scaffold 组件里面传入 drawer 参数可以定义左侧边栏,传入 endDrawer 可以定义右侧边栏.侧边栏默认是隐藏的,我们可以通过手指滑动显示侧边栏,也可以通过点击按钮显示侧边栏. ...
- java--动态代理设计模式,CGLIB实现的动态代理设计模式
代理设计模式 代理设计模式的基本形式 代理设计模式的核心思路,一个接口两个子类,一个子类完成核心业务操作,另一个完成与核心业务有关的辅助性操作.例如,编写一个简单的设计模式. package com. ...
- 2-3 查找树及其Java实现
2-3 查找树 定义(来源:wiki) 查找 插入 2-3 查找树 定义(来源:wiki) 2–3树是一种树型数据结构,内部节点(存在子节点的节点)要么有2个孩子和1个数据元素,要么有3个孩子和2个数 ...
- vue---父调子 $refs (把父组件的数据传给子组件)
ps:App.vue 父组件 Hello.vue 子组件 App.vue : <template> <div id="app"> <input t ...
- flask 框架 转载:https://cloud.tencent.com/developer/article/1465949
1.cookie.py """ - 解释: 用来保持服务器和浏览器交互的状态的, 由服务器设置,存储在浏览器 - 作用: 用来做广告推送 - cookie的设置和获取 - ...
- JavaScript-日常代码-时间
取得今天0点: var start = new Date(new Date(new Date().toLocaleDateString()).getTime()); console.log(start ...
- SublimeText 括号插件 Bracket Highlighter高亮设置
1. ctrl + shift + p,打开命令面板,输入install,在菜单中选择Package Control:Install Package如图 2. 步骤1后弹出的命令输入框中 输入:Bra ...
- text-transform
text-transform 语法: text-transform:none | capitalize | uppercase | lowercase | 默认值:none 适用于:所有元素 继承性 ...
- Codeforces Round #524 (Div.2)题解
题解 CF1080A [Petya and Origami] 这道题其实要我们求的就是 \[\lceil 2*n/k \rceil + \lceil 5*n/k \rceil + \lceil 8*n ...
- 项目 java.lang.NoClassDefFoundError 异常。
项目部署之后调用接口失败:异常信息: NoClassDefFoundError ClassNotFoundException 注意这两种是有区别的. 具体转 https://www.cnblogs.c ...