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向系统日历中添加日程事件 总结 在项目开发中,我们有预约提醒.定时提醒需求时,可以使用系统日历来辅助提醒: 通过向系统日历中写入事件.设置提醒方式(闹钟),实现到时间自动提醒的功能: ...
随机推荐
- centos7 修改内核文件 网卡名称为标准名称eth0
在开机安装系统之前按TAB键后输入标记信息后安装系统就可以变成标准网卡接口eth0 或eth1
- (转)Java锁性能提高有哪些机制?
转自:https://forum.idevfun.io/t/topic/235/2 Java 中,Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的.但是监视器锁本质又 ...
- 通过 cross apply 实现函数转换成表并与原表进行关联
create table tb_cross_apply ( id int identity, multivalue ) ) insert into tb_cross_apply VALUES ('A| ...
- 从groupby 理解mapper-reducer
注,reduce之前已经shuff. mapper.py #!/usr/bin/env python """mapper.py""" imp ...
- python基础--文件控制
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- Linux环境下安装mysql5.6(二进制包不是rpm格式)
一.准备: 1.CentOS release 6.8 2.mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz 3.Linux下MySQL5.6与MySQL5.7安装方法 ...
- 记录 ubuntu 安装中文语言出现 software database is broken
在终端下执行 sudo apt-get install language-pack-zh-han* 然后去语言中心设置中文,并全局使用即可.
- go语言-数据类型及类型之间转换
数据类型分类 一.数据类型-基本数据类型 1.整数型(int.有符号(int8/1字节.int16/2字节.int32/4字节.int64/8字节).无符号(uint.uint8.uint16.uin ...
- 随便写一个c++类
为了让代码更贴合实际项目需要,我们分别用xxx.h文件,xxx.cpp文件来包含类的定义,类的声明和类的调用部分,实验平台vs2010 mycoach.h文件 #pragma once #includ ...
- Vue获取后端数据 渲染页面后跳转
主页面 <template> <div> <ul v-for="item in courseList"> <router-link :to ...