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

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

  • 名称(正在填充)

  • 电话(正在填充)

  • 街道(无人居住)

  • 城市(无人居住)

  • 状态(未填充)

  • 国家(没有看到这个字段,没有填充)

如上所述,某些屏幕正在填充,但地址字段并未填充。这是用于触发打开 Android 的“添加联系人”屏幕的活动的 Xamarin C# 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);

    }

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

http://img1.sycdn.imooc.com/64aa15a3000111ff04450788.jpghttp://img2.sycdn.imooc.com/64aa15b0000159e504510787.jpg

我找到了一个可以转换为 Xamarin.Android 的链接,但我一直在努力实现Java Samples。



holdtom
浏览 196回答 1
1回答

幕布斯7119047

我担心您只能将 下可用的值作为参数传递ContactsContract.Intents.Insert。因此,对于地址,您只有邮政编码,如文档中详述:public static Final String POSTAL:在 API 5 中添加联系邮政地址的额外字段。类型:字符串恒定值:“邮政”因此,您可以按如下方式传递邮政编码:intent.PutExtra(ContactsContract.Intents.Insert.Postal, postalCode);您现在可能需要要求用户在“添加联系人”页面中手动输入其他值。另外,您是否测试过使用列表同时添加多部手机?从文档来看,您似乎应该使用SECONDARY_PHONE和TERTIARY_PHONE常量。
打开App,查看更多内容
随时随地看视频慕课网APP