问题有关获取android的联系 [英] issue about getting Contact in android
本文介绍了问题有关获取android的联系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经开发了具有节能电话号码和电话簿获得联系的工具的应用程序
但我得到我的code错误
我的code是
@覆盖
公共无效onActivityResult(INT申请code,INT结果code,意图数据){
super.onActivityResult(要求code,因此code,数据);
如果(要求code == PICK_CONTACT和放大器;&安培;结果code == getActivity()RESULT_OK&功放;&安培;空=数据!){
乌里联系数据= data.getData();
光标C = getActivity()getContentResolver()查询(联络人资料,NULL,NULL,NULL,NULL);
如果(c.moveToFirst()){
字符串名称= c.getString(c.getColumnIndexOrThrow(Contacts.People.NAME));
串号= c.getString(c.getColumnIndexOrThrow(Contacts.People.NUMBER));
friendMobile.setText(名称);
Toast.makeText(getActivity()名+的编号为+号,Toast.LENGTH_LONG).show();
}
}
}
错误日志
java.lang.RuntimeException的:不提供结果ResultInfo {谁= NULL,请求= 131074,结果= -1,数据=意向{DAT =内容://com.android。联系人/联系人/查询/ 0r2-2B352F4D2741 / 2 FLG =为0x1}}到活动{com.app / com.app.MainActivity}:java.lang.IllegalArgumentException:如果列'名'不存在
在android.app.ActivityThread.deliverResults(ActivityThread.java:3141)
在android.app.ActivityThread.handleSendResult(ActivityThread.java:3184)
在android.app.ActivityThread.access $ 1100(ActivityThread.java:130)
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1243)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:4745)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
在dalvik.system.NativeStart.main(本机方法)
解决方案
试试这个办法,希望这将帮助你解决你的问题。
注:在AndroidManifest.xml中添加读取联系人权限
字符串ID =;
字符串否=;
字符串名称=;
光标光标= getContentResolver()查询(data.getData(),NULL,NULL,NULL,NULL);
而(cursor.moveToNext()){
ID = cursor.getString(cursor.getColumnIndex(_ ID));
如果(1.equalsIgnoreCase(cursor.getString(cursor.getColumnIndex(has_phone_number)))){
光标cursorNo = getContentResolver()查询(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,空,CONTACT_ID =+ ID,NULL,NULL);
而(cursorNo.moveToNext()){
如果(cursorNo.getInt(cursorNo.getColumnIndex(数据2))== 2){
无= no.concat(cursorNo.getString(cursorNo.getColumnIndex(数据1)));
打破;
}
}
cursorNo.close();
}
}
cursor.close();
字符串whereName = ContactsContract.Data.MIMETYPE +=和+ ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID +=;
的String [] whereNameParams =新的String [] {ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE,ID};
光标nameCur = getContentResolver()查询(ContactsContract.Data.CONTENT_URI,空,whereName,whereNameParams,ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)。
而(nameCur.moveToNext()){
NAME = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
}
nameCur.close();
Toast.makeText(这一点,姓名:+姓名+号:+无,Toast.LENGTH_SHORT).show();
i have Developed an application that have facility of saving Phone Number and getting Contact from Phone Directory
but i getting error in my code
my code is
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_CONTACT && resultCode == getActivity().RESULT_OK && null != data) {
Uri contactData = data.getData();
Cursor c = getActivity().getContentResolver().query(contactData, null, null, null, null);
if (c.moveToFirst()) {
String name = c.getString(c.getColumnIndexOrThrow(Contacts.People.NAME));
String number = c.getString(c.getColumnIndexOrThrow(Contacts.People.NUMBER));
friendMobile.setText(name);
Toast.makeText(getActivity(), name + " has number " + number, Toast.LENGTH_LONG).show();
}
}
}
error log is
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=131074, result=-1, data=Intent { dat=content://com.android.contacts/contacts/lookup/0r2-2B352F4D2741/2 flg=0x1 }} to activity {com.app./com.app.MainActivity}: java.lang.IllegalArgumentException: column 'name' does not exist
at android.app.ActivityThread.deliverResults(ActivityThread.java:3141)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3184)
at android.app.ActivityThread.access$1100(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
解决方案
Try this way,hope this will help you to solve your problem.
Note : add read contact permission in AndroidManifest.xml
String id="";
String no="";
String name="";
Cursor cursor = getContentResolver().query(data.getData(), null, null, null, null);
while(cursor.moveToNext()){
id = cursor.getString(cursor.getColumnIndex("_id"));
if("1".equalsIgnoreCase(cursor.getString(cursor.getColumnIndex("has_phone_number")))){
Cursor cursorNo = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, "contact_id = " + id, null, null);
while (cursorNo.moveToNext()) {
if (cursorNo.getInt(cursorNo.getColumnIndex("data2")) == 2){
no = no.concat(cursorNo.getString(cursorNo.getColumnIndex("data1")));
break;
}
}
cursorNo.close();
}
}
cursor.close();
String whereName = ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID + " = ?";
String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE, id };
Cursor nameCur = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);
while (nameCur.moveToNext()) {
name= nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
}
nameCur.close();
Toast.makeText(this," Name : "+name+" No : "+no,Toast.LENGTH_SHORT).show();
这篇关于问题有关获取android的联系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文