【问题标题】:Picking contacts number from the contact list and putting it in an EditText从联系人列表中选择联系人号码并将其放入 EditText
【发布时间】:2017-03-30 23:17:30
【问题描述】:

我有一个 EditText 和一个 Button,该按钮有一个 OnClickListener,它用startActivityForResult(new Intent("android.intent.action.PICK", android.provider.ContactsContract.Contacts.CONTENT_URI), 1) 打开联系人列表。

如果用户单击按钮,它会打开联系人以便他们选择一个,现在我想将该号码导入 EditText。有没有办法做到这一点?

Edit:EditText和按钮都属于一个Fragment。

【问题讨论】:

标签: android android-fragments android-intent android-contacts


【解决方案1】:

如果您特别需要用户选择电话号码,您可以请求电话号码选择器,而不是像您正在做的联系人选择器。

试试这个:

Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
intent.setType(CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, 1);

您将获得的意图数据将针对数据表中的特定电话行:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ((requestCode == 1) && (resultCode == RESULT_OK)) {
        Cursor cursor = null;
        try {
            Uri uri = data.getData();
            cursor = getContentResolver().query(uri, new String[] { CommonDataKinds.Phone.NUMBER }, null, null, null);
            if (cursor != null && cursor.moveToNext()) {
                String phone = cursor.getString(0);
                // Do something with phone
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

【讨论】:

  • 我在protedcted void onActivityResult 上有一个错误,说它与 android.support.v4.app.Fragment 中的那个冲突,我应该把它公开
  • 太棒了!公开没问题,这取决于你继承什么类
  • 谢谢。但只是想知道是否有办法过滤号码,例如去掉国家代码并保留号码(例如:+33XX XX XX XXX 变为 XX XX XX XXX)
  • 你需要使用谷歌的libphonenumbergithub.com/googlei18n/libphonenumber,见:stackoverflow.com/a/37666789/819355(只需使用PhoneNumberFormat.NATIONAL而不是E164
猜你喜欢
  • 2021-07-06
  • 2017-06-22
  • 2016-03-01
  • 2019-06-03
  • 2014-04-04
  • 2020-06-26
  • 2018-01-08
  • 1970-01-01
  • 2021-09-18
相关资源
最近更新 更多