主数据只来了吗?来了、数据

2023-09-04 05:12:07 作者:ōベ一拳一个小学生

我试图访​​问该联系人的详细信息,但我只得到了主要的细节,我现在用的是Ecliar平台,这意味着,

现在我得到的姓名,号码和电子邮件使用C $ c.But这$如果有2个号码和2个电子邮件ID联系人的所有联系人的ID我得到的只是初级的号码和电子邮件ID

我现在用在ListView显示像

1.Name 1,第1号,电子邮件ID 1。

2.Name 1,号码2,电子邮件ID为2的第一人等

3.Name 2,1号,电子邮件ID,1秒的人,所以on.will继续这样下去。

但我得到一个特定的联系人只有数字1和电子邮件ID 1。没拿到2号和电子邮件ID2的联系。

我编辑的循环逻辑,但它去了其他一些错误。如何解决这个问题呢?

code

 公共类详情延伸活动{

ListView的LVITEM;
私人按钮btnAdd;
字符串EMAILADDRESS =;
字符串显示名=;
字符串phoneNumber的=;
ArrayList的<字符串> contactlist =新的ArrayList<字符串>();
ArrayAdapter<字符串> itemAdapter;


@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);
   LVITEM =(ListView控件)this.findViewById(R.id.listview);
   btnAdd =(按钮)this.findViewById(R.id.btn);
   itemAdapter =新的ArrayAdapter<字符串>(这一点,android.R.layout.simple_list_item_1,contactlist);
   lvItem.setAdapter(itemAdapter);
   btnAdd.setOnClickListener(新View.OnClickListener(){
       公共无效的onClick(视图v){
          readContacts();

       }
   });
}


 私人无效readContacts()
{
    ContentResolver的CR = getContentResolver();
    光标光标= cr.query(ContactsContract.Contacts.CONTENT_URI,NULL,NULL,NULL,NULL);
    而(cursor.moveToNext())
    {
        显示名=;
           ArrayList的<字符串> phoneNumber的=新的ArrayList<字符串>();
           ArrayList的<字符串> EMAILADDRESS =新的ArrayList<字符串>();

        显示名= cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        字符串ID = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

        光标电子邮件= cr.query(Email.CONTENT_URI,空,Email.CONTACT_ID +=+ ID,NULL,NULL);
        而(emails.moveToNext())
        {
            emailAddress.add(emails.getString(emails.getColumnIndex(Email.DATA)));
            打破;
        }
        emails.close();
        if(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
        {
            光标pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +=?,新的String [] {ID},NULL);
            而(pCur.moveToNext())
            {
                 phoneNumber.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
              打破;
            }
            pCur.close();
        }

INT phoneNumberCount = phoneNumber.size();
INT emailCount = emailAddress.size();

//添加数组列表数据contactlist ..

如果(phoneNumberCount> emailCount){

    的for(int i = 0; I< = phoneNumberCount;我++)
      {
        如果(emailCount I标记)
          {
           contactlist.add(显示名+,+ phoneNumber.get(I)+,+ emailAddress.get(ⅰ)+\ñ);
           }
        其他
        {
          contactlist.add(显示名+,+ phoneNumber.get(ⅰ)+\ñ);
        }
       }
    }
    其他
       {
        的for(int i = 0; I< = emailCount;我++)
         {
        如果(phoneNumberCount I标记)
          {
            contactlist.add(显示名+,+ phoneNumber.get(I)+,+ emailAddress.get(ⅰ)+\ñ);
          }
        其他
        {
            contactlist.add(显示名+,+ emailAddress.get(ⅰ)+\ñ);
        }
      }
    }
    }
    Collections.sort(contactlist);
    itemAdapter.notifyDataSetChanged();
    cursor.close();

 }
  }
 

什么解决办法?

LogCat中

  11月六号至19号:28:08.058:W / KeyCharacterMap(265):没有键盘ID 0
十一月六号至19日:28:08.068:W / KeyCharacterMap(265):使用默认的键盘对应:/system/usr/keychars/qwerty.kcm.bin
十一月六号至19日:28:33.187:D / dalvikvm(265):GREF已增至201
十一月六号至19日:33:32.118:W / KeyCharacterMap(307):没有键盘ID 0
十一月六号至19日:33:32.118:W / KeyCharacterMap(307):使用默认的键盘对应:/system/usr/keychars/qwerty.kcm.bin
06-19 14:16:35.488:D / AndroidRuntime(385):关闭虚拟机
06-19 14:16:35.498:W / dalvikvm(385):主题ID = 3:线程退出与未捕获的异常(组= 0x4001b188)
06-19 14:16:35.498:E / AndroidRuntime(385):未捕获的处理程序:由于未捕获的异常螺纹主力退出
06-19 14:16:35.507:E / AndroidRuntime(385):java.lang.IndexOutOfBoundsException:无效的位置1,大小为1
06-19 14:16:35.507:E / AndroidRuntime(385):在java.util.ArrayList.get(ArrayList.java:341)
06-19 14:16:35.507:E / AndroidRuntime(385):在com.abhi.Trial3.readContacts(Trial3.java:100)
06-19 14:16:35.507:E / AndroidRuntime(385):在com.abhi.Trial3.access $ 0(Trial3.java:44)
06-19 14:16:35.507:E / AndroidRuntime(385):在com.abhi.Trial3 $ 1.onClick(Trial3.java:38)
06-19 14:16:35.507:E / AndroidRuntime(385):在android.view.View.performClick(View.java:2364)
06-19 14:16:35.507:E / AndroidRuntime(385):在android.view.View.onTouchEvent(View.java:4179)
06-19 14:16:35.507:E / AndroidRuntime(385):在android.widget.TextView.onTouchEvent(TextView.java:6541)
 
企业物料主数据的标准化管理要如何做,这篇文章终于讲清楚了

解决方案

试试这个code,替换 readContacts()从你的方法,让我知道发生什么事..

 私人无效readContacts()
{
    ContentResolver的CR = getContentResolver();
    光标光标= cr.query(ContactsContract.Contacts.CONTENT_URI,NULL,NULL,NULL,NULL);
    而(cursor.moveToNext())
    {
        显示名=;
        ArrayList的<字符串> phoneNumber的=新的ArrayList<字符串>();
        ArrayList的<字符串> EMAILADDRESS =新的ArrayList<字符串>();

        显示名= cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        字符串ID = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

        光标电子邮件= cr.query(Email.CONTENT_URI,空,Email.CONTACT_ID +=+ ID,NULL,NULL);
        而(emails.moveToNext())
        {
            emailAddress.add(emails.getString(emails.getColumnIndex(Email.DATA)));
            打破;
        }
        emails.close();
        if(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
        {
            光标pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +=?,新的String [] {ID},NULL);
            而(pCur.moveToNext())
            {
                 phoneNumber.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
              打破;
            }
            pCur.close();
        }

INT phoneNumberCount = phoneNumber.size();
INT emailCount = emailAddress.size();

//添加数组列表数据contactlist ..

如果(phoneNumberCount> emailCount){

    的for(int i = 0; I< phoneNumberCount;我++)
      {
        如果(emailCount I标记)
          {
           contactlist.add(显示名+,+ phoneNumber.get(I)+,+ emailAddress.get(ⅰ)+\ñ);
           }
        其他
        {
          contactlist.add(显示名+,+ phoneNumber.get(ⅰ)+\ñ);
        }
       }
    }
    其他
       {
        的for(int i = 0; I< emailCount;我++)
         {
        如果(phoneNumberCount I标记)
          {
            contactlist.add(显示名+,+ phoneNumber.get(I)+,+ emailAddress.get(ⅰ)+\ñ);
          }
        其他
        {
            contactlist.add(显示名+,+ emailAddress.get(ⅰ)+\ñ);
        }
      }
    }
    }
    Collections.sort(contactlist);
    itemAdapter.notifyDataSetChanged();
    cursor.close();
}
 

I am trying to access the Details of the contacts but I get only the primary details , I am using the Ecliar platform that means,

Now I get the name, number and the email ID of all contacts using this code.But If a contact having 2 numbers and 2 email IDs I get only the primary number and Email ID

I am using the display in the ListView like

1.Name 1, Number 1, email id 1.

2.Name 1, Number2, email Id 2. for the first person and so on

3.Name 2, number 1, email Id 1 for second person and so on.will continue like this.

But I get only the number1 and email ID 1 of a particular contact. Didn't get the number 2 and email id2 of that contact.

I edited the loop logic but it went to some other errors. How to solve this problem ?

Code

public class Details extends Activity {

ListView lvItem;
private Button btnAdd;
String emailAddress = "" ; 
String  displayName  = "" ;
String phoneNumber  = "" ; 
ArrayList<String> contactlist=new ArrayList<String>();
ArrayAdapter<String> itemAdapter;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   lvItem = (ListView)this.findViewById(R.id.listview);  
   btnAdd = (Button)this.findViewById(R.id.btn);
   itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contactlist);
   lvItem.setAdapter(itemAdapter);
   btnAdd.setOnClickListener(new View.OnClickListener() {
       public void onClick(View v) {
          readContacts();

       }
   }); 
}


 private void readContacts()
{
    ContentResolver cr =getContentResolver();
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    while (cursor.moveToNext()) 
    {
        displayName  = "" ;
           ArrayList<String> phoneNumber  = new ArrayList<String>();
           ArrayList<String> emailAddress  = new ArrayList<String>();

        displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));       
        String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

        Cursor emails = cr.query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null);
        while (emails.moveToNext()) 
        { 
            emailAddress.add(emails.getString(emails.getColumnIndex(Email.DATA)));
            break;
        }
        emails.close(); 
        if(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
        {
            Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{id}, null);
            while (pCur.moveToNext()) 
            {
                 phoneNumber.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
              break;  
            }  
            pCur.close();  
        }   

int phoneNumberCount = phoneNumber.size();
int emailCount = emailAddress.size();

// Add arraylist data to contactlist..

if(phoneNumberCount > emailCount) {

    for (int i=0; i<=phoneNumberCount; i++)
      {
        if(emailCount>i)
          {
           contactlist.add(displayName + " , " + phoneNumber.get(i) + " , " + emailAddress.get(i)+"\n");  
           }
        else
        {
          contactlist.add(displayName + " , " + phoneNumber.get(i)+"\n");
        }
       }
    }
    else 
       {
        for (int i=0; i<=emailCount; i++)
         {
        if(phoneNumberCount>i)
          {
            contactlist.add(displayName+", "+phoneNumber.get(i)+", "+ emailAddress.get(i)+"\n");
          }
        else
        {
            contactlist.add(displayName+","+ emailAddress.get(i)+"\n");
        } 
      }
    }     
    }
    Collections.sort(contactlist);
    itemAdapter.notifyDataSetChanged();
    cursor.close(); 

 }
  }

Any Solution ?

LogCat

06-19 11:28:08.058: W/KeyCharacterMap(265): No keyboard for id 0
06-19 11:28:08.068: W/KeyCharacterMap(265): Using default keymap:     /system/usr/keychars/qwerty.kcm.bin
06-19 11:28:33.187: D/dalvikvm(265): GREF has increased to 201
06-19 11:33:32.118: W/KeyCharacterMap(307): No keyboard for id 0
06-19 11:33:32.118: W/KeyCharacterMap(307): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
06-19 14:16:35.488: D/AndroidRuntime(385): Shutting down VM
06-19 14:16:35.498: W/dalvikvm(385): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
06-19 14:16:35.498: E/AndroidRuntime(385): Uncaught handler: thread main exiting due to uncaught exception
06-19 14:16:35.507: E/AndroidRuntime(385): java.lang.IndexOutOfBoundsException: Invalid location 1, size is 1
06-19 14:16:35.507: E/AndroidRuntime(385):  at java.util.ArrayList.get(ArrayList.java:341)
06-19 14:16:35.507: E/AndroidRuntime(385):  at com.abhi.Trial3.readContacts(Trial3.java:100)
06-19 14:16:35.507: E/AndroidRuntime(385):  at com.abhi.Trial3.access$0(Trial3.java:44)
06-19 14:16:35.507: E/AndroidRuntime(385):  at com.abhi.Trial3$1.onClick(Trial3.java:38)
06-19 14:16:35.507: E/AndroidRuntime(385):  at android.view.View.performClick(View.java:2364)
06-19 14:16:35.507: E/AndroidRuntime(385):  at android.view.View.onTouchEvent(View.java:4179)
06-19 14:16:35.507: E/AndroidRuntime(385):  at android.widget.TextView.onTouchEvent(TextView.java:6541)

解决方案

Try this code, replace readContacts() method from yours and let me know what happen..

private void readContacts()
{
    ContentResolver cr =getContentResolver();
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    while (cursor.moveToNext()) 
    {
        displayName  = "" ;
        ArrayList<String> phoneNumber  = new ArrayList<String>();
        ArrayList<String> emailAddress  = new ArrayList<String>();

        displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));       
        String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

        Cursor emails = cr.query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null);
        while (emails.moveToNext()) 
        { 
            emailAddress.add(emails.getString(emails.getColumnIndex(Email.DATA)));
            break;
        }
        emails.close(); 
        if(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
        {
            Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{id}, null);
            while (pCur.moveToNext()) 
            {
                 phoneNumber.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
              break;  
            } 
            pCur.close();  
        }   

int phoneNumberCount = phoneNumber.size();
int emailCount = emailAddress.size();

// Add arraylist data to contactlist..

if(phoneNumberCount > emailCount) {

    for (int i=0; i<phoneNumberCount; i++)
      {
        if(emailCount>i)
          {
           contactlist.add(displayName + " , " + phoneNumber.get(i) + " , " + emailAddress.get(i)+"\n");    
           }
        else
        {
          contactlist.add(displayName + " , " + phoneNumber.get(i)+"\n");
        }
       }
    }
    else
       {
        for (int i=0; i<emailCount; i++)
         {
        if(phoneNumberCount>i)
          {
            contactlist.add(displayName+", "+phoneNumber.get(i)+", "+ emailAddress.get(i)+"\n");
          }
        else
        {
            contactlist.add(displayName+","+ emailAddress.get(i)+"\n");
        }
      }
    }     
    }
    Collections.sort(contactlist);
    itemAdapter.notifyDataSetChanged();
    cursor.close(); 
}