【问题标题】:Android Contacts with Phone Number Only仅包含电话号码的 Android 联系人
【发布时间】:2011-08-13 14:26:47
【问题描述】:

我制作了一个名为 Location Texter 的 Android 应用。 除了当我想查找联系人时,它工作正常,我只希望显示带有电话号码的联系人。目前它显示了所有的联系人。 代码如下:

public  void showContacts(Main main, Intent data) {
    Cursor cursor =  main.managedQuery(data.getData(), null, null, null, null);
    cursor.moveToNext();
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
    String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 

    Cursor phones = main.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);

    while (phones.moveToNext()) {
        String phoneNo = phones.getString(phones.getColumnIndex(
                ContactsContract.CommonDataKinds.Phone.NUMBER));
        main.numbers.add(phoneNo);
    }
    main.pickPhoneNos(name);
    phones.close();
}

它所做的是打开所有联系人的意图。当其中一个被选中时,它会返回到主要活动。如果所选联系人拥有多个手机号码,则会显示一个对话框,要求用户选择其中一个。我注意到我的一些尝试没有出现对话。 如果很难理解我在说什么,请下载该应用程序。

【问题讨论】:

    标签: android contacts


    【解决方案1】:

    您的问题需要更加具体,很难理解您在问什么。 我可以看到代码存在一些问题。

    1. 您永远不会在 cursorphones 光标上调用 moveToFirst()
    2. 您永远不会检查第一次 moveToNext() 调用的返回值。

    缺少对这些函数的调用可能会使调用进一步导致方法崩溃。

    【讨论】:

    • 我对这段代码的问题并不感到惊讶。我在挑选联系人方面做得不好。我的应用程序所做的是向所选联系人发送文本。目前,当您按下按钮(查找联系人)时,它会向您显示所有联系人。但我只希望它显示有电话号码的联系人。
    【解决方案2】:

    添加这个:

    String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
    
    if (hasPhone.equalsIgnoreCase("1"))
      hasPhone = "true";
    else
      hasPhone = "false" ;
    
    if (Boolean.parseBoolean(hasPhone)) 
    {
      Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" = "+contactId,null, null);
      while (phones.moveToNext()) 
      {
        ...
      }
      ...
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-17
      • 2013-07-17
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 2012-06-13
      • 2013-02-03
      相关资源
      最近更新 更多