You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何在不同Activity之间传递选中的联系人数据

双Activity传递选中联系人列表实现方案

你直接在第二个Activity初始化空ArrayList无法拿到数据是因为不同Activity的内存空间相互独立,默认无法直接共享变量,需要通过Android官方的Intent传值机制实现数据传递,具体实现步骤如下:

前提说明

MultiContactPicker提供的ContactResult类默认已经实现了Parcelable序列化接口,可以直接通过Intent传递列表,无需额外处理。

第一步:修改首个Activity的onActivityResult逻辑

拿到选中联系人列表后,将其封装到Intent中跳转至第二个Activity:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(requestCode == CONTACT_PICKER_REQUEST){
      if(resultCode == RESULT_OK) {
          List<ContactResult> results = MultiContactPicker.obtainResult(data);
          Log.d("MyTag", results.get(0).getDisplayName());
          // 新增跳转传值逻辑
          Intent intent = new Intent(MainActivity.this, SecondActivity.class);
          intent.putParcelableArrayListExtra("selected_contacts", new ArrayList<>(results));
          startActivity(intent);
      } else if(resultCode == RESULT_CANCELED){
          System.out.println("User closed the picker without selecting items.");
      }
  }
}

第二步:第二个Activity接收联系人列表

在发短信的Activity的onCreate方法中接收传递过来的列表:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    List<ContactResult> selectedContacts = new ArrayList<>();
    // 接收数据
    if(getIntent() != null && getIntent().hasExtra("selected_contacts")){
        selectedContacts = getIntent().getParcelableArrayListExtra("selected_contacts");
    }
    // 测试打印验证数据
    for (ContactResult contact : selectedContacts) {
        Log.d("短信页", "联系人:" + contact.getDisplayName() + " 手机号:" + contact.getPhoneNumbers());
    }
    // 后续可直接使用selectedContacts实现发短信逻辑
}

可选简化方案:仅传递手机号列表

如果后续逻辑只需要用到手机号,也可以仅提取手机号列表传递,减少传输数据量:

  • 首个Activity传值代码:
ArrayList<String> phoneList = new ArrayList<>();
for (ContactResult result : results) {
    // 单个联系人可能存在多个手机号,可根据需求筛选后添加
    phoneList.addAll(result.getPhoneNumbers());
}
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putStringArrayListExtra("phone_list", phoneList);
startActivity(intent);
  • 第二个Activity接收代码:
ArrayList<String> phoneList = getIntent().getStringArrayListExtra("phone_list");

内容的提问来源于stack exchange,提问作者siyar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:06:04