Hi.
I tried with your code, it works.
Kindly check two things.

1. You should over 23 contacts, because you write "Uri myPerson =
ContentUris.withAppendedId( People.CONTENT_URI, 23 );"

2. You should write permission code in AndroidManifest.xml like below.

    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".ContentProviderExamples"
                  android:label="@string/app_name">
            <intent-filter>

Have a good day!!

2009/8/26 Pankaj Godbole <panka...@gmail.com>
>
> Hello,
>
> I am learning about Content Providers, and tried the example from the 
> official Android tutorial on the topic. Please see the code below:
>
>
>  --------------------
>
> package com.example.devguide;
>
> import android.app.Activity;
> import android.content.ContentUris;
> import android.database.Cursor;
> import android.net.Uri;
> import android.os.Bundle;
> import android.provider.Contacts.People;
> import android.util.Log;
>
>
> public class ContentProviderExamples extends Activity {
>     /** Called when the activity is first created. */
>     @Override
>     public void onCreate(Bundle savedInstanceState) {
>         super.onCreate(savedInstanceState);
>         setContentView(R.layout.main);
>
>         /* Use the ContentUris method to produce the base URI
>          * for the contact with _ID == 23. */
>         Uri myPerson = ContentUris.withAppendedId( People.CONTENT_URI, 23 );
>
>         /* Alternatively, use the Uri method to produce the base URI. */
>         myPerson = Uri.withAppendedPath( People.CONTENT_URI, "23" );
>
>         /* Query this particular record. */
>         Cursor c = managedQuery( myPerson, null, null, null, null );
>
>         /* Form an array specifying which columns to return. */
>         String[] projection = new String[] { People._ID,
>                                              //People._COUNT, //throws 
> IllegalArgumentException
>                                              People.NAME,
>                                              People.NUMBER };
>         Log.i( "CPE", "projection[] = " + projection );
>
>         /* Get the base URI for the People table in the Contacts content 
> provider. */
>         Uri contacts = People.CONTENT_URI;
>
>         /* Construct the query. */
>         Cursor managedCursor = managedQuery( contacts,
>                                              projection,
>                                              null,
>                                              null,
>                                              People.NAME + " ASC" );
>
>         showColumnData( managedCursor );
>
>         Log.i( "CPE", "End of current code" );
>
>     }
>
>     private void showColumnData( Cursor c ) {
>         if ( c.moveToFirst() ) {
>             String name;
>             String phoneNumber;
>             String imagePath;
>             int nameColumn = c.getColumnIndex( People.NAME );
>             int phoneColumn = c.getColumnIndex( People.NUMBER );
>
>             do {
>                 /* Obtain the field values. */
>                 name = c.getString( nameColumn );
>                 phoneNumber = c.getString( phoneColumn );
>                 Log.d( "CPE", "name = " + name + ", phone = " + phoneNumber );
>
>             } while ( c.moveToNext() );
>         }
>     }
> }
>
> However, the example given did not work, because calling managedQuery with 
> the array projection as one of the arguments resulted in a 
> IllegalArgumentException (java.lang.IllegalArgumentException). Android says 
> that the column "_count" which is the value of the element People._COUNT in 
> array projection is invalid. Can anyone explain to me the reason for this 
> exception, even though the names of all the columns are as per the API 
> specification?
>
> Please see the output of LogCat below:
>
> 08-26 12:06:20.330: ERROR/AndroidRuntime(1112): java.lang.RuntimeException: 
> Unable to start activity 
> ComponentInfo{com.example.devguide/com.example.devguide.ContentProviderExamples}:
>  java.lang.IllegalArgumentException: Invalid column _count
>
> Thanks,
> Pankaj Godbole,
>
>
>
> >

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

Reply via email to