【问题标题】:Android contact picker query only returning phone numberAndroid联系人选择器查询仅返回电话号码
【发布时间】:2015-06-29 10:26:43
【问题描述】:

我正在尝试从联系人选择器中提取一些数据,但我似乎只能获得电话号码。我尝试了多种不同的方法,由于我还在学习 Java,我非常感谢一些帮助。

我想要的:

我得到了什么:

public void onCreate(Bundle savedInstanceSate) {
    (findViewById(R.id.button1)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
            startActivityForResult(i, PICK_CONTACT);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PICK_CONTACT && resultCode == RESULT_OK) {

        //phonedata
        Uri contactUri = data.getData();
        Cursor cursor = getContentResolver().query(contactUri, null, null, null, null);

        //phone
        cursor.moveToFirst();
        int column = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
        TextView Textphone = (TextView)findViewById(R.id.Textphone);
        Textphone.setText(cursor.getString(column));

        //otherdata
        Uri contactData = data.getData();
        Cursor c =  getContentResolver().query(contactData, null, null, null, null);

        //name
        c.moveToFirst();
        int name = c.getColumnIndex(StructuredName.DISPLAY_NAME);
        TextView Textname = (TextView)findViewById(R.id.Textname);
        Textname.setText(c.getString(name));

        //email
        c.moveToFirst();
        int email = c.getColumnIndex(Email.DATA);
        TextView TextEmail = (TextView)findViewById(R.id.Textemail);
        TextEmail.setText(c.getString(email));

        //adress
        c.moveToFirst();
        int address = c.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS);
        TextView Textaddress = (TextView)findViewById(R.id.Textaddress);
        Textaddress.setText(c.getString(address));

        //Nickname
        c.moveToFirst();
        int nickname = c.getColumnIndex(Nickname.NAME);
        TextView Textnickname = (TextView)findViewById(R.id.Textnickname);
        Textnickname.setText(c.getString(nickname));
     }
}

【问题讨论】:

    标签: java android android-contacts contactscontract


    【解决方案1】:

    你可以试试:

    String name=c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    TextView Textname = (TextView)findViewById(R.id.Textname);
    Textname.setText(c.getString(name));
    

    代替:

        int name = c.getColumnIndex(StructuredName.DISPLAY_NAME);
        TextView Textname = (TextView)findViewById(R.id.Textname);
        Textname.setText(c.getString(name)); 
    

    告诉我它是否有效。

    【讨论】:

    • 没有工作 getString (int) in cursor cannet be applied to (java.lang.string)
    • 对不起..应该是:Textname.setText(name);
    猜你喜欢
    • 1970-01-01
    • 2019-06-15
    • 2012-06-13
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2018-01-08
    • 2011-03-13
    • 1970-01-01
    相关资源
    最近更新 更多