【问题标题】:Can't get contacts using Intent.ACTION_PICK无法使用 Intent.ACTION_PICK 获取联系人
【发布时间】:2014-08-27 10:59:36
【问题描述】:

我正在尝试从联系人列表中获取联系人,但由于某种原因我无法获取。我遵循了一些指南。这是我的代码:

public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {
      case R.id.menu_ice_add:
          Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
          startActivityForResult(intent, RequestCodes.PICK_CONTACT);
          return true;          
      default:
         return super.onOptionsItemSelected(item);
   }
}

当我调试时,它总是进入默认情况,它返回 super.onOptionItemSelected(item);

@SuppressLint("InlinedApi")
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    // se comprueba de qué activity está volviendo
    switch(requestCode) {       
    case (RequestCodes.PICK_CONTACT) :
          if (resultCode == Activity.RESULT_OK) {
              Uri contactData = data.getData();

              ContactUtils.addContactInfo(getActivity(), contactData, adapter);

          }             
          break;
    }

    super.onActivityResult(requestCode, resultCode, data);
}

它永远不会在ActivityResult 上启动。

谁能给我一个提示?我会很感激的。谢谢。

编辑 1

我必须说这段代码适用于 Android 2.3,但它不适用于 KitKat(这些是我拥有的设备)

编辑 2

我在清单中添加了 android.permission.READ_CONTACTS

编辑 3(已解决)

问题不在于意图。我正在使用 Fragments 并且正在调用 onActivityResult,但我不知道 我必须对附加 Fragment 的 Activity 执行“super.onActivityResult(arg0,arg1,arg2)”。。 p>

我不会删除这个问题,因为这可能会有所帮助。

谢谢大家。

【问题讨论】:

  • 您是否在清单中添加了权限 android.permission.READ_CONTACTS?
  • 是的,我已经添加了相应的权限
  • 如果它总是出现默认情况,那么在膨胀菜单或选择正确的 id 时可能会出现问题。检查一次

标签: android android-intent android-contacts


【解决方案1】:

当我调试时,它总是进入默认情况,它返回 super.onOptionItemSelected(item);

那么您的case 语句中有错误的项目ID,或者您的R 类与您的资源不同步(清理您的项目,例如Eclipse 中的Project > Clean,以清除该问题)。

它永远不会在ActivityResult 上启动。

这是因为您没有调用startActivityForResult(),因为您的菜单资源和onOptionsItemSelected() 实现存在问题,如上所述。

另请注意,您的代码中显示的用途不需要 READ_CONTACTS,尽管您可能需要 ContactUtils.addContactInfo() 中的任何内容。

FWIW,this directory 包含五个示例项目,所有这些示例项目都成功地将ACTION_PICK 用于ContactsContracts.Contacts.CONTENT_URI。项目之间的差异归结为它们如何处理配置更改(例如,屏幕旋转)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-14
    • 2016-05-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    相关资源
    最近更新 更多