Как использовать контакт Contentprovider? - PullRequest
0 голосов
/ 10 февраля 2012
package com.Kiro.Test;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts.People;

public class TestActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        setContentView(R.layout.main);
        Uri uri=People.CONTENT_URI;
        String projection[]=new String[]{People._ID,People.NAME,People.NUMBER};
        Cursor cur=this.managedQuery(uri, projection, null, null, null);
        int id=cur.getColumnIndex(People._ID);
        super.onCreate(savedInstanceState);
        do{
            System.out.print(cur.getString(id));
            System.out.println("");
        }while(cur.moveToNext());
    }

}

когда я запускаю этот код в моем эмуляторе, logcat находит CursorIndexoutofBoundsException Можете ли вы помочь мне решить эту проблему ??

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Кажется, проблема здесь:

  do{
            System.out.print(cur.getString(id));
            System.out.println("");
        }while(cur.moveToNext());

вам нужно сначала вызвать cur.moveToFirst (), чтобы установить курсор на 0-ю позицию:

cur.moveToFirst();
  while(cur.hasNext(){
            cur.moveToNext();
            System.out.print(cur.getString(id));
            System.out.println("");
        }
0 голосов
/ 10 февраля 2012

Вместо использования "do while" попробуйте время, поскольку do во время выполнения хотя бы один раз, когда условие равно false.

while(cur.moveToNext()){  
System.out.print(cur.getString(id));
System.out.println("");
}   

Может быть, это была проблема.

...