Hi Ralph,

I wish I have a solution for you. That's not supported right now. The only
(not so good) way is to use the browser. I will file an internal feature
request if we don't have one already.

Thanks,
Mike

On Fri, Nov 4, 2011 at 7:24 AM, Ralph <fed...@gmail.com> wrote:

> Hi Michael and thank you.
>
> Can you let us know the recommended way to subscribe a user to a
> public google calendar.
>
> For example, let's say you have a google calendar with public
> information.  for example, some city alerts etc. data.
>
> We want to make it easy for the user to subscribe to the public
> calendar and make it sync'ed and visible (with their permission of
> course)
>
> Today, I have to give them instructions and it seems that each phone
> manufacturer has implemented the calendar in a different way so the
> instructions are very complicated.  What I'd like to send the user to
> a screen with the calendar subscription (visible and sync'ed) already
> set up and let them confirm it.
>
> Thanks,
> Ralph
>
> On Nov 3, 2:29 pm, Michael Chan <mc...@android.com> wrote:
> > Hi,
> >
> > I believe the GoogleCalendarSyncAdapter was not included in the
> > emulator. That's why you can't sync Google Calendars in the emulator.
> >
> > The new Calendar API will support viewing, adding events (not
> > calendars) via Intents. The user will need to confirm before the event
> > is saved.
> >
> > Adding *Google* calendars via the provider is not supported at this
> > time.
> >
> > We will be publishing a developer guide for Calendar APIs with more
> > details on the set of supported intents as well as code snippets.
> >
> > managedQuery has been deprecated. It can cause ANRs. The recommend way
> > is to use a CursorLoader (http://developer.android.com/reference/
> > android/content/CursorLoader.html).  If you just need to read the data
> > and can close the query immediately, you can still do a query (in a
> > non-UI thread), read the data you want, and close the cursor.
> >
> > Thanks,
> > Mike
> >
> > On Nov 3, 8:20 am, Ralph <fed...@gmail.com> wrote:
> >
> >
> >
> >
> >
> >
> >
> > > Thanks again.
> >
> > > I can say that if you have access to an exchange server then the
> > > following examples do work in the android 4.0 level 14 emulator using
> > > google apis at the moment:
> >
> > > Insert an event via Intents:
> > >                         Intent intent = new
> Intent(Intent.ACTION_INSERT)
> > >                     .setType("vnd.android.cursor.item/event")
> > >                     .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
> > > 0)
> > >                     .putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
> > > 1000)
> > >                     .putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY ,
> > > false) // just included for completeness
> > >                     .putExtra(Events.TITLE, "My Awesome Event")
> > >                     .putExtra(Events.DESCRIPTION, "Heading out with
> > > friends to do something awesome.")
> > >                     .putExtra(Events.EVENT_LOCATION, "Earth")
> > >                     .putExtra(Events.RRULE, "FREQ=DAILY;COUNT=10")
> > >                     .putExtra(Events.AVAILABILITY,
> > > Events.AVAILABILITY_BUSY)
> > >                     .putExtra(Events.ACCESS_LEVEL,
> > > Events.ACCESS_PRIVATE)
> > >                     .putExtra(Intent.EXTRA_EMAIL,
> > > "my.fri...@example.com");
> > >            startActivity(intent);
> >
> > > Enumerate:
> >
> > >                 Uri uri =CalendarContract.Calendars.CONTENT_URI;
> > >                         Log.i(TAG, "QQQ: uri: " + uri);
> > >                         String[] projection = new String[] {
> > >                                CalendarContract.Calendars._ID,
> > >                                CalendarContract.Calendars.ACCOUNT_NAME,
> > >                                CalendarContract.Calendars.ACCOUNT_TYPE,
> > >                                CalendarContract.Calendars.NAME,
> >
> > >CalendarContract.Calendars.CALENDAR_DISPLAY_NAME,
> > >
>  CalendarContract.Calendars.CALENDAR_COLOR,
> >
> > >CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL,
> > >
>  CalendarContract.Calendars.OWNER_ACCOUNT,
> > >                                CalendarContract.Calendars.SYNC_EVENTS,
> > >
>  CalendarContract.Calendars.CALENDAR_TIME_ZONE,
> > >
>  CalendarContract.Calendars.ALLOWED_REMINDERS,
> > >                                CalendarContract.Calendars.VISIBLE
> >
> > >                         };
> >
> > >                         Cursor calendarCursor = managedQuery(uri,
> projection,
> > > null, null, null);
> > >                         Log.i(TAG, "cursor: " + calendarCursor);
> > >                     if (calendarCursor != null)
> > >                     {
> > >                         while (calendarCursor.moveToNext())
> > >                         {
> > >                            //Log.i(TAG, "queryDatabase:  title: " +
> > > cursor.getString(cursor.getColumnIndex(Notes.TITLE)) + " note: " +
> > > cursor.getString(cursor.getColumnIndex(Notes.NOTE)));
> > >                                 Log.i(TAG, "QQQ2: cursor: _ID: " +
> > > calendarCursor.getColumnIndex(CalendarContract.Calendars._ID));
> > >                                 for (int i = 0; i <
> > > calendarCursor.getColumnCount(); i++) {
> > >                                         Log.i(TAG, "QQQ2: cursor:
> name: " + i + " =
> > > " + calendarCursor.getColumnName(i));
> > >                                         Log.i(TAG, "QQQ2: cursor:
> type: " + i + " =
> > > " + calendarCursor.getType(i));
> > >
> switch(calendarCursor.getType(i)){
> > >                                         case Cursor.FIELD_TYPE_STRING:
> > >                                                 Log.i(TAG, "QQQ3:
> cursor: value: " + i + "
> > > = " + calendarCursor.getString(i));
> > >                                                 break;
> > >                                         case Cursor.FIELD_TYPE_INTEGER:
> > >                                                 Log.i(TAG, "QQQ3:
> cursor: value: " + i + "
> > > = " + calendarCursor.getInt(i));
> > >                                                 break;
> > >                                         case Cursor.FIELD_TYPE_FLOAT:
> > >                                                 Log.i(TAG, "QQQ3:
> cursor: value: " + i + "
> > > = " + calendarCursor.getFloat(i));
> > >                                                 break;
> >
> > >                                         }
> >
> > >                                 }
> >
> > >                         }
> > >                     }
> > >                  }
> >
> > > On Nov 3, 10:13 am, Mark Murphy <mmur...@commonsware.com> wrote:
> >
> > > > There are no samples in the SDK. I do not know if the content
> provider
> > > > works in the emulator. I was planning on waiting until the source
> code
> > > > for ICS ships, at which point we can start to fill in the
> > > > documentation gaps.
> >
> > > > On Thu, Nov 3, 2011 at 9:57 AM, Ralph <fed...@gmail.com> wrote:
> > > > > Hi Mark,
> >
> > > > > Thanks so much.
> >
> > > > > When I try to subscribe to a public google calendar via Intent on
> > > > > Android Ice Cream Sandwich Level 14 emulator something like this:
> >
> > > > > Does anyone know how to subscribe to a public calendar via the api
> or
> > > > > know where the test cases are?  Thanks.
> >
> > > > >                        Intent intent = new
> Intent(Intent.ACTION_INSERT)
> > > > >
>  .setData(CalendarContract.Calendars.CONTENT_URI)
> > > > >
>  .putExtra(CalendarContract.Calendars.ACCOUNT_NAME,
> > > > > "nyc.ale...@brooklynmarathon.com")
> > > > >
>  .putExtra(CalendarContract.Calendars.ACCOUNT_TYPE,
> > > > > "com.google.calendar")
> > > > >                    .putExtra(CalendarContract.Calendars.NAME,
> "NAME:
> > > > > nyc.ale...@brooklynmarathon.com")
> > > > >
>  .putExtra(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME,
> > > > > "CALENDAR_DISPLAY_NAME: nyc.ale...@brooklynmarathon.com")
> > > > >
>  .putExtra(CalendarContract.Calendars.CALENDAR_COLOR,
> > > > > 0xff0000)
> > > > >
>  .putExtra(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL,
> > > > > 700)
> > > > >
>  .putExtra(CalendarContract.Calendars.OWNER_ACCOUNT,
> > > > > "nyc.ale...@brooklynmarathon.com")
> > > > >
>  .putExtra(CalendarContract.Calendars.SYNC_EVENTS,
> > > > > 1)
> > > > >
>  .putExtra(CalendarContract.Calendars.CALENDAR_TIME_ZONE,
> > > > > "GMT")
> > > > >
>  .putExtra(CalendarContract.Calendars.ALLOWED_REMINDERS,
> > > > > "0,1")
> > > > >                    .putExtra(CalendarContract.Calendars.VISIBLE,
> 1);
> >
> > > > >                        startActivity(intent);
> >
> > > > > I get:
> >
> > > > > W/ContentResolver( 4166): Failed to get type for:
> content://com.android.calendar/calendars
> > > > > (Unknown URL content://com.android.cale
> > > > > ndar/calendars)
> > > > > I/ActivityManager(   74): START {act=android.intent.action.INSERT
> > > > > dat=content://com.android.calendar/calendars (has extras)} from
> > > > > pid 4166
> > > > > D/AndroidRuntime( 4166): Shutting down VM
> > > > > W/dalvikvm( 4166): threadid=1: thread exiting with uncaught
> exception
> > > > > (group=0x409951f8)
> > > > > E/AndroidRuntime( 4166): FATAL EXCEPTION: main
> > > > > E/AndroidRuntime( 4166):
> android.content.ActivityNotFoundException: No
> > > > > Activity found to handle Intent { act=android.intent.action
> > > > > .INSERT dat=content://com.android.calendar/calendars (has extras) }
> > > > > E/AndroidRuntime( 4166):        at
> > > > >
> android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:
> > > > > 1512)
> > > > > E/AndroidRuntime( 4166):        at
> > > > > android.app.Instrumentation.execStartActivity(Instrumentation.java:
> > > > > 1384)
> > > > > E/AndroidRuntime( 4166):        at
> > > > > android.app.Activity.startActivityForResult(Activity.java:3190)
> > > > > E/AndroidRuntime( 4166):        at
> > > > > android.app.Activity.startActivity(Activity.java:3297)
> > > > > E/AndroidRuntime( 4166):        at
> > > > > com.brooklynmarathon.calendarapi2.CalendarAPI2Activity
> > > > > $3.onClick(CalendarAPI2Activity.java:164)
> >
> > > > > E/AndroidRuntime( 4166):        at
> > > > > android.view.View.performClick(View.java:3460)
> > > > > E/AndroidRuntime( 4166):        at android.view.View
> > > > > $PerformClick.run(View.java:13955)
> >
> > ...
> >
> > read more ยป
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to