问题有关获取android的联系 [英] issue about getting Contact in android

查看:114
本文介绍了问题有关获取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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆