android使用SimpleCursorAdapter获取联系人姓名和号码
我使用以下代码使用SimpleCursorAdapter检索联系人姓名和号码android使用SimpleCursorAdapter获取联系人姓名和号码,android,contacts,simplecursoradapter,Android,Contacts,Simplecursoradapter,我使用以下代码使用SimpleCursorAdapter检索联系人姓名和号码 final Uri uri = ContactsContract.Contacts.CONTENT_URI; final String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME }; // boole
final Uri uri = ContactsContract.Contacts.CONTENT_URI;
final String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME };
// boolean mShowInvisible = false;
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP
+ " = '1'";
String[] selectionArgs = null;
final String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC";
m_curContacts = managedQuery(uri, projection, selection, selectionArgs,
sortOrder);
String[] fields = new String[] { ContactsContract.Data.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
m_slvAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2, m_curContacts, fields,
new int[] { android.R.id.text1,android.R.id.text2 });
但是当我运行它时,我得到了以下错误
04-07 17:05:34.980: WARN/dalvikvm(614): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
04-07 17:05:34.990: ERROR/AndroidRuntime(614): Uncaught handler: thread main exiting due to uncaught exception
04-07 17:05:35.080: ERROR/AndroidRuntime(614): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kpj4s.contactadapter/com.kpj4s.contactadapter.ContactAdapter}: **java.lang.IllegalArgumentException: column 'data1' does not exist**
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.os.Handler.dispatchMessage(Handler.java:99)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.os.Looper.loop(Looper.java:123)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.app.ActivityThread.main(ActivityThread.java:4363)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at java.lang.reflect.Method.invokeNative(Native Method)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at java.lang.reflect.Method.invoke(Method.java:521)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at dalvik.system.NativeStart.main(Native Method)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): Caused by: java.lang.IllegalArgumentException: column 'data1' does not exist
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:99)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:339)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:91)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at com.kpj4s.contactadapter.ContactAdapter.ReadContacts(ContactAdapter.java:158)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at com.kpj4s.contactadapter.ContactAdapter.onCreate(ContactAdapter.java:132)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
04-07 17:05:35.080: ERROR/AndroidRuntime(614): ... 11 more
04-07 17:05:34.980:WARN/dalvikvm(614):threadid=3:线程以未捕获异常退出(组=0x4001b188)
04-07 17:05:34.990:错误/AndroidRuntime(614):未捕获处理程序:由于未捕获异常而退出主线程
04-07 17:05:35.080:错误/AndroidRuntime(614):java.lang.RuntimeException:无法启动活动组件信息{com.kpj4s.contactadapter/com.kpj4s.contactadapter.contactadapter}:*java.lang.IllegalArgumentException:列“data1”不存在**
04-07 17:05:35.080:ERROR/AndroidRuntime(614):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):在android.app.ActivityThread.access$2200(ActivityThread.java:119)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于android.os.Handler.dispatchMessage(Handler.java:99)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):在android.os.Looper.loop(Looper.java:123)上
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于android.app.ActivityThread.main(ActivityThread.java:4363)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于java.lang.reflect.Method.invokenactive(本机方法)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于java.lang.reflect.Method.invoke(Method.java:521)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于com.android.internal.os.ZygoteInit$methodAndArgscaler.run(ZygoteInit.java:860)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):在dalvik.system.NativeStart.main(本机方法)
04-07 17:05:35.080:错误/AndroidRuntime(614):原因:java.lang.IllegalArgumentException:列“data1”不存在
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:99)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于android.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:339)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):在android.widget.SimpleCursorAdapter。(SimpleCursorAdapter.java:91)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于com.kpj4s.contactadapter.contactadapter.ReadContacts(contactadapter.java:158)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):位于com.kpj4s.contactadapter.contactadapter.onCreate(contactadapter.java:132)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-07 17:05:35.080:ERROR/AndroidRuntime(614):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
04-07 17:05:35.080:错误/AndroidRuntime(614):。。。还有11个
当我移除联系人contract.commonDataTypes.Phone.NUMBER时,一切正常。当我使用那段代码时,错误就出现了
有没有办法通过SimpleCursorAdapter获得联系人的电话号码和姓名
请帮帮我,伙计们
先谢谢你 使用此代码获取电话号码和姓名
public ArrayList<String> c_Name = new ArrayList<String>();
public ArrayList<String> c_Number = new ArrayList<String>();
static String[] name_Val = null;
String[] phone_Val = null;
String local_value = null;
ContentResolver cr1 = getContentResolver();
String[] projection = new String[] { People._ID, People.NAME,
People.NUMBER };
Uri phone_contacts = People.CONTENT_URI;
Cursor managedCursor = cr1.query(phone_contacts, projection, null,
null, People.NAME + " ASC");
if (managedCursor.moveToFirst()) {
String contactname;
String cphoneNumber;
int nameColumn = managedCursor.getColumnIndex(People.NAME);
int phoneColumn = managedCursor.getColumnIndex(People.NUMBER);
Log.d("int Name", Integer.toString(nameColumn));
Log.d("int Number", Integer.toString(phoneColumn));
do {
contactname = managedCursor.getString(nameColumn);
cphoneNumber = managedCursor.getString(phoneColumn);
Log.d("Outside cname", "ts" + contactname);
Log.d("Outside cno", "ts" + cphoneNumber);
if ((contactname == " " || contactname == null)
&& (cphoneNumber == " " || cphoneNumber == null)) {
// displayAlert1();
} else {
c_Name.add(contactname);
c_Number.add(cphoneNumber);
Log.d("contact Name", c_Name.toString());
Log.d("contact No", c_Number.toString());
}
} while (managedCursor.moveToNext());
}
Uri contacts = Uri.parse("content://icc/adn");
Cursor managedCursor1 = cr1.query(contacts, null, null, null, null);
if (managedCursor1.moveToFirst()) {
String contactname;
String cphoneNumber;
int nameColumn = managedCursor1.getColumnIndex("name");
int phoneColumn = managedCursor1.getColumnIndex("number");
Log.d("int Name", Integer.toString(nameColumn));
Log.d("int Number", Integer.toString(phoneColumn));
do {
// Get the field values
contactname = managedCursor1.getString(nameColumn);
cphoneNumber = managedCursor1.getString(phoneColumn);
if ((contactname == " " || contactname == null)
&& (cphoneNumber == " " || cphoneNumber == null)) {
// displayAlert1();
} else {
c_Name.add(contactname);
c_Number.add(cphoneNumber);
}
} while (managedCursor1.moveToNext());
}
name_Val = (String[]) c_Name.toArray(new String[c_Name.size()]);
phone_Val = (String[]) c_Number.toArray(new String[c_Name.size()]);
public ArrayList c_Name=new ArrayList();
public ArrayList c_Number=new ArrayList();
静态字符串[]name_Val=null;
字符串[]phone_Val=null;
字符串本地_值=null;
ContentResolver cr1=getContentResolver();
字符串[]投影=新字符串[]{People.\u ID,People.NAME,
People.NUMBER};
Uri phone\u contacts=People.CONTENT\u Uri;
Cursor managedCursor=cr1.query(电话、联系人、投影、空、,
null,People.NAME+“ASC”);
if(managedCursor.moveToFirst()){
字符串contactname;
字符串cphoneNumber;
int nameColumn=managedCursor.getColumnIndex(People.NAME);
int phoneColumn=managedCursor.getColumnIndex(People.NUMBER);
Log.d(“int Name”,Integer.toString(nameColumn));
Log.d(“int Number”,Integer.toString(phoneColumn));
做{
contactname=managedCursor.getString(nameColumn);
cphoneNumber=managedCursor.getString(phoneColumn);
日志d(“外部cname”、“ts”+联系人姓名);
日志d(“cno外部”、“ts”+cphoneNumber);
如果((contactname==“”| | contactname==null)
&&(cphoneNumber==“”| | cphoneNumber==null)){
//displayAlert1();
}否则{
c_Name.add(联系人姓名);
c_编号。添加(cphoneNumber);
Log.d(“联系人姓名”,c_Name.toString());
Log.d(“联系人编号”,c_Number.toString());
}
}while(managedCursor.moveToNext());
}
Uri contacts=Uri.parse(“content://icc/adn");
游标managedCursor1=cr1.query(contacts,null,null,null,null);
if(managedCursor1.moveToFirst()){
字符串contactname;
字符串cphoneNumber;
int nameColumn=managedCursor1.getColumnIndex(“名称”);
int phoneColumn=managedCursor1.getColumnIndex(“编号”);
Log.d(“int Name”,Integer.toString(nameColumn));