Sending requestSync to contentresolver is the right way to go if you want an
explicit button to request sync. This is what applications like Calendar and
Gmail do when you push the "Sync" button.  ContentProvider will also request
sync whenever there is a change in the data.

You should query raw contacts that have the DIRTY flag set.  These are the
added, deleted or changed contacts.   Your sync adapter should reset this
flag after syncing up changes.  It also needs to physically remove deleted
contacts from the database.  In both cases it needs to supply the
CALLER_IS_SYNCADAPTER query parameter - otherwise the protocol won't work.

Cheers,
- Dmitri

On Mon, Jan 31, 2011 at 1:37 PM, himanshu jain <[email protected]>wrote:

> @Dmitri
>
> Thanks a lot for spending time to answer my questions at least some
> doubts are faded off.
>
> 1) I understand to use own activity for editing and creating new
> contacts.
>
> 2) Ok, if i avoid ContentObserver even i had that in mind might
> require something to be running in background which is bad agreed.
>
> 3) But, there are two use cases first if there is a button that say
> sync now and i send request using requestSync() method will it start
> immediate sync via SyncManager or again it will depend upon
> SyncManager discretion?? if thats true i cannot start immediate
> Sync ??.
>
>  Second use case how would i know if there is a change corresponding
> to my account in raw_contact utilizing best practice push
> notification ?? so that i can trigger syncing.
>
> thanks Dimitri for your time and ideas
>
>
> On Jan 30, 11:42 am, Dmitri Plotnikov <[email protected]> wrote:
> > Hi Himanshu,
> >
> > 1) SampleSyncAdapter is still a good source of inspiration.  It has some
> > issues and plan to have them fixed in the nearest future.
> >
> > 2) In releases of Android from Eclair through Gingerbread integrated
> editing
> > of 3rd party contacts is poorly supported.  The trick is to insert a data
> > row, "Edit in MyApp", which would take the user to your app and your app
> > would then provide an editor activity.  Also, there is no provision in
> the
> > Contacts UI for creating new contacts in 3rd party accounts.  We have
> fixed
> > those issues in Honeycomb.  Now you can specify two activities in your
> > metadata xml file: one for creating new contacts and one for editing
> > existing ones and voilĂ ! - you have seamless integration.  Of course,
> it's a
> > bit too soon to rely on Honeycomb as the dominant version of Android ;-)
>  So
> > for now you will need to either go with the described hack or only allow
> > creation/editing of contacts through your app.
> >
> > 3) Please consider an alternative to using content observers for a sync
> > adapter.  There are several reasons:
> >
> > - In order to receive notifications, your process will need to be running
> at
> > all times. Or it would have to have a broadcast receiver, which is very
> very
> > costly.
> > - Content observer notifications are not reliable.  If your process is
> not
> > running at the time the change occurs, the notification will never be
> > delivered.  A broadcast receiver will solve that problem, but please
> don't
> > use broadcast receivers for this!
> > - Contacts provider sends out non-discriminated notifications.  Whenever
> > anything (e.g. chat presence) changes, all observers are notified whether
> > they have supplied a specific URI or not.
> >
> > What you do want to use is the DIRTY flag and the CALLER_IS_SYNCADAPTER
> > query parameter and let SyncManager invoke your sync adapter.  It does
> some
> > sophisticated scheduling and you want to take advantage of it.
> >
> > Cheers,
> > - Dmitri
> >
> > On Fri, Jan 28, 2011 at 4:22 PM, himanshu jain <[email protected]
> >wrote:
> >
> >
> >
> >
> >
> >
> >
> > > Hi All,
> >
> > > I am trying to implement two way sync.
> >
> > > 1) I tried using SampleSyncAdapter Code first it works on emulator but
> > > not on Device , then i tried to write SyncAdapter with SyncService as
> > > a demo app with AccountAuthenticator, as per Documentation for
> > > SampleSyncAdapter SyncService gets called on
> > > ACTION_AUTHENTICATOR_INTENT but my service does not gets started on
> > > device , i defined service in manifest and all things but does not
> > > work on device it gets started on Emulator.
> >
> > > 2) If i port my app on device i can see only first name and last name
> > > fields how can i see all the fields available for contact
> > > application ?? can i edit them also utilizing the same native
> > > editor??.
> >
> > > 3) I planning to add contentobserver for sync from device to cloud
> > > whenever there is change corresponding to my account in contact table
> > > i want to sync it after listening through contentobserver.Is that
> > > correct ??.
> >
> > > thanks
> >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to
> [email protected]
> > > To unsubscribe from this group, send email to
> > > [email protected]<android-developers%[email protected]><android-developers%2Bunsubs
> [email protected]>
> > > 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 [email protected]
> To unsubscribe from this group, send email to
> [email protected]<android-developers%[email protected]>
> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to