All that stuff about duplicates looks a bit suspicious.  I would try to
uninstall all extra sync adapters.

On Tue, Feb 1, 2011 at 10:56 AM, himanshu jain <[email protected]>wrote:

> here is the log accord according to Plan A and Plan B when i have
> SampleSyncAdapater running on Device A-OS 2.2
>
> 01-31 21:02:06.105: VERBOSE/SyncManager(206): [SyncManager.java:
> 653:sendCheckAlarmsMessage()] sending MESSAGE_CHECK_ALARMS
> 01-31 21:02:06.145: DEBUG/SyncManager(206): [SyncManager.java:
> 607:scheduleSync()] scheduleSync: sync of Account {name=username,
> type=com.example.android.samplesync}, com.android.contacts is not
> allowed, dropping request
> 01-31 21:02:06.165: VERBOSE/SyncManager(206): [SyncStorageEngine.java:
> 374:reportChange()] reportChange 1 to: [android.content.SyncManager
> $7@313452f8, android.content.ContentResolver$1@314960c8]
> 01-31 21:02:06.175: VERBOSE/SyncManager(206): [SyncManager.java:
> 653:sendCheckAlarmsMessage()] sending MESSAGE_CHECK_ALARMS
> 01-31 21:02:06.235: VERBOSE/SyncManager(206): [SyncManager.java:
> 614:scheduleSync()] scheduleSync: delay 0, source 0, account Account
> {name=username, type=com.example.android.samplesync}, authority
> com.android.contacts, extras Bundle[{}]
> 01-31 21:02:06.235: VERBOSE/SyncManager(206): [SyncManager.java:
> 786:scheduleSyncOperation()] scheduleSyncOperation: dropping duplicate
> sync operation authority: com.android.contacts account: Account
> {name=username, type=com.example.android.samplesync} extras: []
> syncSource: 0 when: 319845221 expedited: false
> 01-31 21:02:06.235: VERBOSE/SyncManager(206): [SyncStorageEngine.java:
> 374:reportChange()] reportChange 1 to: [android.content.SyncManager
> $7@313452f8, android.content.ContentResolver$1@314960c8]
> 01-31 21:02:06.255: VERBOSE/SyncManager(206): [SyncManager.java:
> 653:sendCheckAlarmsMessage()] sending MESSAGE_CHECK_ALARMS
> 01-31 21:02:06.325: VERBOSE/SyncManager(206): [SyncManager.java:
> 614:scheduleSync()] scheduleSync: delay 0, source 2, account Account
> {name=Backup Assistant, type=com.fusionone.account}, authority
> com.android.contacts, extras Bundle[{}]
> 01-31 21:02:06.335: VERBOSE/SyncManager(206): [SyncManager.java:
> 786:scheduleSyncOperation()] scheduleSyncOperation: dropping duplicate
> sync operation authority: com.android.contacts account: Account
> {name=Backup Assistant, type=com.fusionone.account} extras: []
> syncSource: 2 when: 319845328 expedited: false
> 01-31 21:02:06.385: VERBOSE/SyncManager(206): [SyncManager.java:
> 614:scheduleSync()] scheduleSync: delay 0, source 2, account Account
> {name=username, type=com.example.android.samplesync}, authority
> com.android.contacts, extras Bundle[{}]
> 01-31 21:02:06.395: VERBOSE/SyncManager(206): [SyncManager.java:
> 786:scheduleSyncOperation()] scheduleSyncOperation: dropping duplicate
> sync operation authority: com.android.contacts account: Account
> {name=username, type=com.example.android.samplesync} extras: []
> syncSource: 2 when: 319845375 expedited: false
> 01-31 21:02:06.425: VERBOSE/SyncManager(206): [SyncManager.java:
> 786:scheduleSyncOperation()] scheduleSyncOperation: dropping duplicate
> sync operation authority: com.android.contacts account: Account
> {name=username, type=com.example.android.samplesync} extras: []
> syncSource: 4 when: 319845416 expedited: false
> 01-31 21:02:06.425: VERBOSE/SyncManager(206): [SyncManager.java:
> 1473:handleMessage()] handleSyncHandlerMessage: MESSAGE_CHECK_ALARMS
> 01-31 21:02:06.425: VERBOSE/SyncManager(206): [SyncManager.java:
> 1473:handleMessage()] handleSyncHandlerMessage: MESSAGE_CHECK_ALARMS
> 01-31 21:02:06.435: VERBOSE/SyncManager(206): [SyncManager.java:
> 1473:handleMessage()] handleSyncHandlerMessage: MESSAGE_CHECK_ALARMS
>
> On Jan 31, 6:00 pm, Dmitri Plotnikov <[email protected]> wrote:
> > I cannot spot anything obviously wrong here.
> >
> > Here's what I would do in this situation:
> >
> > Plan A: Closely examine the logs - there might be something there
> already.
> >  Enable more logging and see if you can glean anything from it:
> >
> > adb shell setprop log.tag.SyncManager VERBOSE
> >
> > Plan B: I would put aside the sync adapter that you wrote, take
> > SampleSyncAdapter, make sure it works on the device, and then start
> morphing
> > it into what you need, making small incremental changes and retesting
> until
> > it stops working.  Then you know where you made a mistake.
> >
> > Plan C: I would get Android source and step through it in the debugger.
> >  SyncManager is a complicated class, so it will take you a few minutes to
> > figure out.  But in the end it's just Java.  If you can write Java, you
> can
> > read Java.
> >
> > I hope this helps,
> > - Dmitri
> >
> > On Mon, Jan 31, 2011 at 5:19 PM, himanshu jain <[email protected]
> >wrote:
> >
> >
> >
> >
> >
> >
> >
> > > this is my manifest file
> >
> > > <manifest xmlns:android="http://schemas.android.com/apk/res/android";
> > >      package="org.c99.SyncProviderDemo"
> > >      android:versionCode="1"
> > >      android:versionName="1.0">
> >
> > > <uses-permission
> > >        android:name="android.permission.GET_ACCOUNTS" />
> > >    <uses-permission
> > >        android:name="android.permission.USE_CREDENTIALS" />
> > >    <uses-permission
> > >        android:name="android.permission.MANAGE_ACCOUNTS" />
> > >    <uses-permission
> > >        android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
> > >    <uses-permission
> > >        android:name="android.permission.INTERNET" />
> > >    <uses-permission
> > >        android:name="android.permission.WRITE_SETTINGS" />
> > >    <uses-permission
> > >        android:name="android.permission.WRITE_SECURE_SETTINGS" />
> > >    <uses-permission
> > >        android:name="android.permission.READ_CONTACTS" />
> > >    <uses-permission
> > >        android:name="android.permission.WRITE_CONTACTS" />
> > >    <uses-permission
> > >        android:name="android.permission.READ_SYNC_STATS" />
> > >    <uses-permission
> > >        android:name="android.permission.READ_SYNC_SETTINGS" />
> > >    <uses-permission
> > >        android:name="android.permission.WRITE_SYNC_SETTINGS" />
> >
> > >    <application android:icon="@drawable/icon" android:label="@string/
> > > app_name">
> > >        <activity android:name=".LoginActivity"
> > >                  android:label="@string/app_name">
> > >            <intent-filter>
> > >                <action android:name="android.intent.action.VIEW" />
> > >            </intent-filter>
> > >        </activity>
> > >                <activity android:name=".ProfileActivity"
> > >                                        android:label="Profile">
> > >                        <intent-filter>
> > >                                <action
> > > android:name="android.intent.action.VIEW" />
> > >                                <category
> > > android:name="android.intent.category.DEFAULT" />
> > >                                <data
> > > android:mimeType="vnd.android.cursor.item/
> > > vnd.org.c99.SyncProviderDemo.profile" />
> > >                        </intent-filter>
> > >                </activity>
> > >                <service android:name=".AccountAuthenticatorService"
> > >                        android:exported="true">
> > >                        <intent-filter>
> > >                                <action
> > > android:name="android.accounts.AccountAuthenticator" />
> > >                        </intent-filter>
> > >                        <meta-data
> > > android:name="android.accounts.AccountAuthenticator"
> > >                                android:resource="@xml/authenticator" />
> > >                </service>
> > >                <service android:name=".ContactsSyncAdapterService"
> > >                        android:exported="true" >
> > >                        <intent-filter>
> > >                                <action
> > > android:name="android.content.SyncAdapter" />
> > >                        </intent-filter>
> > >                        <meta-data
> > > android:name="android.content.SyncAdapter"
> > >                                android:resource="@xml/syncadapter" />
> > >                        <meta-data
> > > android:name="android.provider.CONTACTS_STRUCTURE"
> > >                                android:resource="@xml/contacts" />
> > >                </service>
> >
> > >    </application>
> > >    <uses-sdk android:minSdkVersion="5" />
> >
> > > </manifest>
> >
> > > thanks
> >
> > > On Jan 31, 4:53 pm, Dmitri Plotnikov <[email protected]> wrote:
> > > > I would double-check every line of AndroidManifest.xml, compare it
> with
> > > the
> > > > one in SampleSyncAdapter to see if anything's missing.
> >
> > > > On Mon, Jan 31, 2011 at 4:26 PM, himanshu jain <
> [email protected]
> > > >wrote:
> >
> > > > > @Dmitri
> >
> > > > > Yes i created my account when i go to Account & sync section
> through
> > > > > settings and after adding my account , sync gets enabled in DDMS i
> can
> > > > > see SyncManager gets called twice once on setIsSyncable and on
> > > > > setSyncAutomatically but My Service associated with SyncAdapter
> does
> > > > > not gets started and also i dont reach to onPerformSync immediately
> > > > > when i explicitly call requestSync.
> >
> > > > > thanks
> >
> > > > > On Jan 31, 4:11 pm, Dmitri Plotnikov <[email protected]>
> wrote:
> > > > > > Do you see your account in Settings/Accounts?   Does it have
> contact
> > > > > syncing
> > > > > > enabled?
> >
> > > > > > On Mon, Jan 31, 2011 at 2:44 PM, himanshu jain <
> > > [email protected]
> > > > > >wrote:
> >
> > > > > > > @Dmitri
> >
> > > > > > > thanks once again
> >
> > > > > > > But why my SyncService not gets started by SyncManager on
> Device i
> > > > > > > dont know , and i explicitly call requestSync flow is not going
> > > inside
> > > > > > > onPerformSync.?
> >
> > > > > > > thanks
> >
> > > > > > > On Jan 31, 1:49 pm, Dmitri Plotnikov <[email protected]>
> > > wrote:
> > > > > > > > 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
> >
> > ...
> >
> > 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 [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