【问题标题】:How to get the phone number?如何获取电话号码?
【发布时间】:2011-09-05 07:36:49
【问题描述】:

我正在尝试将用户选择的电话号码放入编辑文本中。我有一个按钮:-

contact.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK,
                        Phone.CONTENT_URI);
                startActivityForResult(intent, 0);

            }
        });

以及下面的函数:

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

        switch (reqCode) {
        case 0:
            if (resultCode == Activity.RESULT_OK) {
                Cursor c = getContentResolver().query(Phone.CONTENT_URI, null,
                        null, null, null);
                c.moveToFirst();
                String phone = c.getString(c.getColumnIndexOrThrow(Phone.NUMBER));
                phone = phone.replace("-", "");
                Log.v("getting phone number", "Phone Number: " + phone);
                txtPhoneNo.setText(phone);

            }
            break;
        }
    }

我得到了最后一次联系的电话号码。如何获取所选的电话号码?

【问题讨论】:

    标签: android android-intent android-contacts phone-number


    【解决方案1】:

    执行以下操作:

    if (resultCode == Activity.RESULT_OK)
    {
      Uri contactData = data.getData();
      ContentResolver cr = getContentResolver();
      Cursor curContact = managedQuery(contactData, null, null, null, null);
    
      if ((curContact != null) && (curContact.moveToFirst()))
      {
        String id = curContact.getString(curContact
            .getColumnIndexOrThrow(BaseColumns._ID));
    
        // check there's a phone number at all
        if (Integer.parseInt(curContact.getString(curContact
            .getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
        {
    
          // get the phone number
          Cursor curNumbers = cr.query(
              ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
              ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
              new String[] { id }, null);
    
          if ((curNumbers != null) && curNumbers.moveToFirst())
          {
            String strNumber = 
              curNumbers.getString(
               curNumbers.getColumnIndexOrThrow(
                 ContactsContract.CommonDataKinds.Phone.NUMBER)));
    
            curNumbers.close();
          }
        }
        curContact.close();
      }
    

    【讨论】:

    • 我得到 Force Close 并且在 LogCat 中我有这个消息:05-31 10:26:19.680: ERROR/AndroidRuntime(4036): Caused by: java.lang.IllegalArgumentException: column 'has_phone_number' does不存在
    【解决方案2】:

    看看这段代码!

    btn_existing_contacts.setOnClickListener(new OnClickListener() {
                public void onClick(View v){
                    Intent intent_contacts = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
                    /*contacts.setAction(android.content.Intent.ACTION_VIEW);
                    contacts.setData(People.CONTENT_URI);*/
                    startActivityForResult(intent_contacts, 0);
                    //displayContacts();
    
    
                }
             });
    

    从联系人屏幕返回后,

    @Override
    protected void onActivityResult(int requestCode, int resultCode,Intent data)
    {
    super.onActivityResult(requestCode, resultCode, data);
    String name,mailid,id;
    switch(requestCode)
    {
    case 0:
        {
            if(resultCode == RESULT_OK )
            {
                Uri contactdata  = data.getData();
    
                Cursor cur = managedQuery(contactdata, null, null, null, null);
    
    
                if(cur.moveToFirst())
                {
                    id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                    Cursor emailCur = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,
                            ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",new String[]{id}, null); 
                    emailCur.moveToFirst();
                    String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
    
    
                    name = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
                    //mailid = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    //mailid = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Email._ID));
                    //Toast.makeText(context_contact, "Name:"+name+"\nmailid:"+email, Toast.LENGTH_SHORT).show();
                    Intent intent_add_invitees = new Intent(<ClassContext>,<ur classname>.class);
                    intent_add_invitees.putExtra("invitee_name", name);
                    intent_add_invitees.putExtra("invitee_mailid", email);
                    setResult(RESULT_OK, intent_add_invitees);
                    finish();
    
                }
            }
    
        }
    
    
    
    }
    }
    

    【讨论】:

    • Send_invitations 是什么类?
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    相关资源
    最近更新 更多