zoukankan      html  css  js  c++  java
  • 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.
             }

    packagesprovidersCalendarProvidersrccomandroidproviderscalendarCalendarDatabaseHelper.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");
            ......
        }

    packagesprovidersCalendarProvidersrccomandroidproviderscalendarCalendarProvider2.java

                            if ((!validAccounts.contains(currAccount)) &&
                                (!c.getString(1).equalsIgnoreCase("com.android.xbh.tv"))) {
                                accountsToDelete.add(currAccount);
                            }
  • 相关阅读:
    css单位及颜色值
    web表单作业
    打卡第一天
    IIS的应用池-网站
    Sublime 提示 The package specified, DocBlockr, is not available
    Git/GitHub 初用体验与总结
    自定义置顶TOP按钮
    Firebug 学习使用教程
    ASP.NET导出文件FileResult的使用
    DataGrid获取当前行某列值
  • 原文地址:https://www.cnblogs.com/blogs-of-lxl/p/11796537.html
Copyright © 2011-2022 走看看