如何使用意图和活动在Xamarin Android中插入与城市,街道,邮政编码,国家/地区的联系方式?

Hue*_*Hue 7 c# android xamarin.android xamarin xamarin.forms

我需要使用Xamarin Forms / Android的意图以编程方式打开android Contacts应用程序。当出现“添加新联系人”活动/屏幕时,我想用以下字段预填充它:

  • 名称(正在填充)
  • 电话(正在填充)
  • 街道(未填充)
  • 城市(未填充)
  • 状态(不填充)
  • 国家(未看到此字段,未填充)

如上所述,某些屏幕正在填充,但地址字段却没有。这是Xamarin C#Android代码/服务,用于触发打开Android“添加联系人”屏幕的活动:

 public void AddContact(string name, string[] phoneNumbers, string streetAddress, string city, string state, string postalCode, CountryValues countrycode)
    {
        // get current activity
        var activity = CrossCurrentActivity.Current.Activity;

        // create add contact intent
        var intent = new Intent(Intent.ActionInsert);
        intent.SetType(ContactsContract.Contacts.ContentType);

        // add field for contact name
        intent.PutExtra(ContactsContract.Intents.Insert.Name, name);

        // Adding more than on phone number if available
        foreach (string numbers in phoneNumbers)
        {
            intent.PutExtra(ContactsContract.Intents.Insert.Phone, numbers);
        }

        // pre-populate address fields
        intent.PutExtra(ContactsContract.CommonDataKinds.StructuredPostal.Street, streetAddress);
        intent.PutExtra(ContactsContract.CommonDataKinds.StructuredPostal.City, city);
        intent.PutExtra(ContactsContract.CommonDataKinds.StructuredPostal.Region, state);
        intent.PutExtra(ContactsContract.CommonDataKinds.StructuredPostal.Postcode, postalCode);
        intent.PutExtra(ContactsContract.CommonDataKinds.StructuredPostal.Country, countrycode.ToString());

        //start activity
        activity.StartActivity(intent);
    }
Run Code Online (Sandbox Code Playgroud)

该活动的确在联系人应用程序中打开了“添加新联系人”屏幕,但仅填充了姓名和电话号码字段。查看以下屏幕截图:

填充字段

字段未填充

我找到了一个可能会转换为Xamarin.Android的链接,但是我一直在努力实现Java示例

任何帮助,将不胜感激!

Mat*_*mer 3

我担心您只能将 下可用的值作为参数传递ContactsContract.Intents.Insert。因此,对于地址,您只有邮政编码如文档中详述:

public static Final String POSTAL:在 API 5 中添加

联系邮政地址的额外字段。

类型:字符串

恒定值:“邮政”

因此,您可以按如下方式传递邮政编码:

intent.PutExtra(ContactsContract.Intents.Insert.Postal, postalCode);
Run Code Online (Sandbox Code Playgroud)

您现在可能需要要求用户在“添加联系人”页面中手动输入其他值。

另外,您是否测试过使用列表同时添加多部手机?从文档来看,您似乎应该使用SECONDARY_PHONETERTIARY_PHONE常量。