我希望其他人解释从联系人到文本框的电话号码

时间:2012-02-23 05:43:54

标签: android

我试试这个:

public class CallMEActivity extends Activity {
    private static final String TAG = null;
    /** Called when the activity is first created. */

     Button btnPress;
     EditText txtPhoneNo;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        btnPress = (Button) findViewById(R.id.btnPress);
        txtPhoneNo = (EditText) findViewById(R.id.txtPhone);

        btnPress.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {  
                Intent i = new
                Intent(android.content.Intent.ACTION_PICK);
                i.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
                int request_Code = 0;
                startActivityForResult(i,request_Code);
            }
        });
    }

    @Override
    public void onActivityResult(int reqCode, int resultCode, Intent data) {
        super.onActivityResult(reqCode, resultCode, data);

        try {
            if (resultCode == Activity.RESULT_OK) {
                Uri contactData = data.getData();

                Cursor cur = managedQuery(contactData, null, null, null, null);
                ContentResolver contect_resolver = getContentResolver();

                if (cur.moveToFirst()) {
                    String id = cur
                            .getString(cur
                                    .getColumnIndexOrThrow(ContactsContract.Contacts._ID));

                    Cursor phoneCur = contect_resolver.query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                    + " = ?", new String[] { id }, null);

                    if (phoneCur.moveToFirst()) {

                        txtPhoneNo.setText(phoneCur
                                .getString(phoneCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));



                    }

                    id = null;

                    phoneCur = null;
                }
                contect_resolver = null;
                cur = null;
            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
            Log.e(TAG, e.toString());
        } catch (Exception e) {
            e.printStackTrace();
            Log.e(TAG, e.toString());
        }
    }
}

我按下按钮,选择一个联系人 - >但文本框仍然是空的

我用debug运行它,我发现cur为空

如何解决?

2 个答案:

答案 0 :(得分:1)

试试这个

按钮上的

Intent i = new
Intent(android.content.Intent.ACTION_PICK);
i.setType(ContactsContract.CommonDataKinds.Phone.C ONTENT_TYPE);
startActivityForResult(i,request_Code);

然后在代码下面创建一个方法粘贴并做相应的操作。

这个想法是你打开了一个ContactActivity来获取信息。所以当你选择一个联系人时,onActivityResult会被自动解雇。所以你必须在那里找到号码并且必须放入文本框

@Override
    public void onActivityResult(int reqCode, int resultCode, Intent data) {
        super.onActivityResult(reqCode, resultCode, data);

        try {
            if (resultCode == Activity.RESULT_OK) {
                Uri contactData = data.getData();

                Cursor cur = managedQuery(contactData, null, null, null, null);
                ContentResolver contect_resolver = getContentResolver();

                if (cur.moveToFirst()) {
                    String id = cur
                            .getString(cur
                                    .getColumnIndexOrThrow(ContactsContract.Contacts._ID));

                    Cursor phoneCur = contect_resolver.query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                    + " = ?", new String[] { id }, null);

                    if (phoneCur.moveToFirst()) {

                        txtPhoneNo.setText(phoneCur
                                .getString(phoneCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));



                    }

                    id = null;

                    phoneCur = null;
                }
                contect_resolver = null;
                cur = null;
            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
            Log.e(TAG, e.toString());
        } catch (Exception e) {
            e.printStackTrace();
            Log.e(TAG, e.toString());
        }

答案 1 :(得分:0)

试试这个。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RESULT_PICK_CONTACT && resultCode == RESULT_OK) {
        String strName = "";
        String strPhone = "";

        Uri dataUri = data.getData();
        Cursor contacts = managedQuery(dataUri, null, null, null, null);
        if (contacts.moveToFirst()) {
            String name;
            int nameColumn = contacts.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
            name = contacts.getString(nameColumn);
            Cursor phones = getContentResolver().query(dataUri, null, null, null, null);
            if (phones.moveToFirst()) {
                String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                strName = new String(name);
                strPhone = new String(phoneNumber);
            }
            phones.close();
        }

        EditText edtName = (EditText) mParentsAddDialog.findViewById(R.id.edt_add_parents_name);
        EditText edtPhone = (EditText) mParentsAddDialog.findViewById(R.id.edt_add_parents_phone);

        edtName.setText(strName);
        edtPhone.setText(strPhone);
    }
}