【问题标题】:How to pick contact number from phone-book of android in to my application?如何从 android 的电话簿中选择联系人号码到我的应用程序中?
【发布时间】:2011-11-03 09:21:04
【问题描述】:

全部 我想从我的应用程序数据库中的android电话簿中获取号码.. 我已经用下面的代码试过了,但是这里我得到的是人的名字,而不是我想要电话簿中的号码,并想把它存储在我的数据库中..如何实现这一点????任何人都可以指导我..

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

        switch(reqCode){
           case (PICK_CONTACT):
             if (resultCode == Activity.RESULT_OK){
                 Uri contactData = data.getData();
                 Cursor c = managedQuery(contactData, null, null, null, null);

                 if (c.moveToFirst()){
                     // other data is available for the Contact.  I have decided
                     //    to only get the name of the Contact.
                     String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.CONTENT_TYPE));
                     Toast.makeText(getApplicationContext(), name, Toast.LENGTH_SHORT).show();
                 }
             }
        }

提前致谢--

【问题讨论】:

    标签: android


    【解决方案1】:

    试试这个代码,

       @Override
       public void onActivityResult(int reqCode, int resultCode, Intent
      data){
        super.onActivityResult(reqCode, resultCode, data);
    
        switch(reqCode){
           case (PICK_CONTACT):
             if (resultCode == Activity.RESULT_OK)
             {
                 Uri contactData = data.getData();
                 Cursor c = managedQuery(contactData, null, null, null, null);
              if (c.moveToFirst()) {
              String id =   
                c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
    
              String hasPhone =
              c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
    
              if (hasPhone.equalsIgnoreCase("1")) {
             Cursor phones = getContentResolver().query( 
                          ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
                          ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id, 
                          null, null);
                phones.moveToFirst();
                String cNumber = phones.getString(phones.getColumnIndex("data1"));
              }
                }
             }
        }
    

    【讨论】:

    • okey.....如果我想在相同布局的textview上显示该特定数字,那么如何实现它????
    • 完成..它的工作..非常感谢.....但是光标正在移动到下一个联系人,它正在为所有联系人检索相同的号码......
    【解决方案2】:

    我知道这是一个老问题,但我认为以下资源 来自 Android 在这个问题上非常有帮助。 “奖金”部分是 raj 正在寻找的确切代码。我认为这个链接应该对以后看到这个问题的人有所帮助,特别是如果你不了解 CapDroid 的 sn-p。

    http://developer.android.com/training/basics/intents/result.html

    【讨论】:

    • 很好的例子!谢谢
    【解决方案3】:

    这将对您有所帮助:

    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));
                    String name = "";
                    String no = "";
    
                    Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null);
    
                    if (phoneCur.moveToFirst()) {
                        name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                        no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    }
    
                    Log.e("Phone no & name :***: ", name + " : " + no);
                    txt.append(name + " : " + no + "\n");
    
                    id = null;
                    name = null;
                    no = null;
                    phoneCur = null;
                }
                contect_resolver = null;
                cur = null;
                //                      populateContacts();
            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
            Log.e("IllegalArgumentException::", e.toString());
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("Error :: ", e.toString());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-13
      • 2014-02-07
      • 2018-01-08
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      相关资源
      最近更新 更多