联系人未显示在我的edittext

时间:2017-05-22 06:39:19

标签: android android-contacts

所以我一直在尝试添加联系人到edittext,我使用Onclickevent来调用联系人,然后一旦选择了联系人,就应该写入edittext,但是我无法做到,下面是我的Onactivity结果,

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
            case CONTACT_PICKER_RESULT:
                Cursor cursor = null;
                String name = "";
                try {
                    Uri result = data.getData();
                    //writeToFile("uri" +result);
                    String id = result.getLastPathSegment();

                    // query for name
                    cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[] { id },
                            null);

                    if (cursor != null && cursor.moveToFirst())
                    {
                        int phoneIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA);
                        int nameIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
                        writeToFile("ifcursor" +phoneIdx+nameIdx);
                        name = cursor.getString(nameIdx);
                    }



                } catch (Exception e) {
                    //Log.e(DEBUG_TAG, "Failed to get name", e);
                } finally {
                    if (cursor != null) {
                        cursor.close();
                    }
                   // phNo = (EditText) findViewById(R.id.phone_number);
                    phNo.setText(name);
                    if (name.length() == 0) {
                      Toast.makeText(getApplicationContext(),"Name not found for contact.",Toast.LENGTH_LONG).show();
                    }

                }

                break;
        }

    } else {
        //Log.w(DEBUG_TAG, "Warning: activity result not ok");
    }
}

任何帮助都会深深感激,它坚持“找不到名字”

2 个答案:

答案 0 :(得分:0)

试试这个

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Check which request it is that we're responding to
        if (requestCode == PICK_CONTACT_REQUEST) {
            // Make sure the request was successful
            if (resultCode == RESULT_OK) {
                // Get the URI that points to the selected contact
                Uri contactUri = data.getData();
                // We only need the NUMBER column, because there will be only one row in the result
                String[] projection = {Phone.NUMBER};

                // Perform the query on the contact to get the NUMBER column
                // We don't need a selection or sort order (there's only one result for the given URI)
                // CAUTION: The query() method should be called from a separate thread to avoid blocking
                // your app's UI thread. (For simplicity of the sample, this code doesn't do that.)
                // Consider using CursorLoader to perform the query.
                Cursor cursor = getContentResolver()
                        .query(contactUri, projection, null, null, null);
                cursor.moveToFirst();

                // Retrieve the phone number from the NUMBER column
                int column = cursor.getColumnIndex(Phone.DISPLAY_NAME);
                String number = cursor.getString(column);
                  phNo.setText(number );


                // Do something with the phone number...
            }
        }
    }

答案 1 :(得分:0)

如果您需要用户选择具有电话号码的联系人,您应该调用以下意图:

Intent i = new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI);
startActivityForResult(i, CONTACT_PICKER_RESULT);

然后您可以像onActivityResult一样处理响应:

Uri result = data.getData();
// because we asked for a Phone.CONTENT_URI picker, we'll get a uri for a Phone._ID entry
String id = result.getLastPathSegment(); 
String[] projection = new String[] { Phone.DISPLAY_NAME, Phone.NUMBER };
String selection = Phone._ID + "=" + id;
Cursor cursor = getContentResolver().query(Phone.CONTENT_URI, projection, selection,null, null);

if (cursor != null && cursor.moveToFirst()) {
    String name = cursor.getString(0);
    String number = cursor.getString(1);
    Log.d("MyActivity", "got name=" + name + ", phone=" + number);
}
if (cursor != null) {
    cursor.close();
}