繁体   English   中英

如何使用联系Contentprovider?

[英]How to use contact Contentprovider?

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可以帮我解决这个问题吗?

似乎问题在这里:

  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("");
        }

不要使用“ do while”尝试使用while,因为do while运行至少一次,即使条件为假。

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

我是这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM