【问题标题】:Android Intent to create Contact using StructuredNameAndroid Intent 使用 StructuredName 创建联系人
【发布时间】:2015-10-20 08:06:24
【问题描述】:

我正在开发一个使用 Intent 创建联系人的应用程序。为什么使用 Intent 你会问:因为它是让用户在注册之前随意修改联系人。

我的问题是,当我使用 StructuredNameStructuredPostal 时,对于其他 CommonDataKinds,它运行良好。这是我的代码:

 ContentValues name = new ContentValues();
   name.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
   name.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, "Firstname");
   name.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
   name.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, "LASTNAME");
 data.add(name);
 ContentValues row1 = new ContentValues();
   row1.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
   row1.put(ContactsContract.CommonDataKinds.Organization.COMPANY, "company");
   row1.put(ContactsContract.CommonDataKinds.Organization.TITLE, "position");
 data.add(row1);
 ContentValues row3 = new ContentValues();
   row3.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE);
   row3.put(ContactsContract.CommonDataKinds.Website.TYPE, ContactsContract.CommonDataKinds.Website.TYPE_HOME);
   row3.put(ContactsContract.CommonDataKinds.Website.URL, "website");
 data.add(row3);

这里是结构化邮政

 ContentValues row5 = new ContentValues();
  row5.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE);
  row5.put(ContactsContract.CommonDataKinds.StructuredPostal.CITY, "city");
  row5.put(ContactsContract.CommonDataKinds.StructuredPostal.STREET, "street");
  row5.put(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, "postcode");
  row5.put(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, "country");
 data.add(row5);

i = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
i.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, data);
startActivity(i);

由于这个问题,我暂时做了一个补丁:

i.putExtra(ContactsContract.Intents.Insert.NAME, "Firstname LASTNAME");
i.putExtra(ContactsContract.Intents.Insert.POSTAL, "street, code city, country");

有人知道怎么了?

感谢您的回答:)

【问题讨论】:

    标签: android android-intent android-contacts


    【解决方案1】:

    要在 Intent.INSERT 中使用 StructuredName,您应该为 StructuredName 添加 Insert.Name 和数据行

    i.putExtra(ContactsContract.Intents.Insert.NAME, "Firstname LASTNAME"); ContentValues name = new ContentValues(); name.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); name.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, "Firstname"); name.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); name.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, "LASTNAME"); data.add(name);

    结构化邮政也是如此。您需要添加 Insert.POSTAL 和 StructuredPostal 数据行。

    Insert.Name 被视为 DISPLAY_NAME,其余字段用于 StructuredName。 Insert.POSTAL 用作格式化地址。这就是为什么您需要同时提供这两种数据的原因。

    要查看 android 如何处理您的 Intent,请检查 file 中的 parseStructuredNameExtra 方法

    【讨论】:

      【解决方案2】:

      StructuredPostal 添加类型。并使用不同的 mimetype。不要为街道等地址字段添加空值。

      ContentValues row5 = new ContentValues();
      row5.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE);
      row5.put(ContactsContract.CommonDataKinds.StructuredPostal.CITY, "city");
      row5.put(ContactsContract.CommonDataKinds.StructuredPostal.STREET, "street");
      row5.put(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, "postcode");
      row5.put(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, "country");
      row5.put(ContactsContract.CommonDataKinds.StructuredPostal.TYPE, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME);
      data.add(row5);
      

      StructuredName 对我也不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-16
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2012-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多