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 <himanshu....@gmail.com>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 <dplotni...@google.com> 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 <himanshu....@gmail.com
> >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 <dplotni...@google.com> 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 <
> himanshu....@gmail.com
> > > >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 <dplotni...@google.com>
> 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 <
> > > himanshu....@gmail.com
> > > > > >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 <dplotni...@google.com>
> > > 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 <
> > > > > himanshu....@gmail.com
> > > > > > > >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
> > > > > > > android-developers@googlegroups.com
> > > > > > > > > To unsubscribe from this group, send email to
> > > > > > > > > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com><android-developers%2Bunsubs
> cr...@googlegroups.com><android-developers%2Bunsubs
> > > cr...@googlegroups.com><android-developers%2Bunsubs
> > > > > cr...@googlegroups.com><android-developers%2Bunsubs
> > > > > > > cr...@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<android-developers%2bunsubscr...@googlegroups.com><android-developers%2Bunsubs
> cr...@googlegroups.com><android-developers%2Bunsubs
> > > cr...@googlegroups.com><android-developers%2Bunsubs
> > > > > cr...@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<android-developers%2bunsubscr...@googlegroups.com><android-developers%2Bunsubs
> cr...@googlegroups.com><android-developers%2Bunsubs
> > > cr...@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<android-developers%2bunsubscr...@googlegroups.com><android-developers%2Bunsubs
> cr...@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<android-developers%2bunsubscr...@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