XamarinFormsアプリケーションでAndroidの連絡先を取得する

ニュービー

Xamarin Forms Androidアプリケーションの一部は、ユーザーの連絡先を電話からリストに取得します。連絡先を取得する方法は次のとおりです。

この時点まで、アプリケーションをテストするために、テスト連絡先の.vcfファイルをAndroidエミュレーターにインポートしていました。これは正しく機能し、私のメソッドは連絡先のリストを返します。

ただし、電話の連絡先アプリを開いて新しい連絡先を入力することにより、Androidエミュレーターに連絡先を手動で追加した場合。このメソッドはまだ.vcf連絡先のみを返し、作成したばかりの新しい連絡先は含まれていません。

.vcfの連絡先は、手動で入力した連絡先とは異なる方法で電話に保存されると思います。投影を作成するときに間違った場所を見ていますか?

public class PhoneContacts_Android : IPhoneContacts
{
    private List<Contact> _contacts = new List<Contact>();

    public List<Contact> GetContactsList()
    {
        if (ContextCompat.CheckSelfPermission(MainActivity.ThisActivity, Manifest.Permission.ReadContacts) == (int)Permission.Granted)
        {
            var uri = ContactsContract.CommonDataKinds.StructuredPostal.ContentUri;

            string[] projection = {
            ContactsContract.Contacts.InterfaceConsts.Id,
            ContactsContract.Contacts.InterfaceConsts.DisplayName,
            ContactsContract.CommonDataKinds.StructuredPostal.FormattedAddress,
            ContactsContract.CommonDataKinds.StructuredPostal.Street,
            ContactsContract.CommonDataKinds.StructuredPostal.City,
            ContactsContract.CommonDataKinds.StructuredPostal.Region,
            ContactsContract.CommonDataKinds.StructuredPostal.Postcode
            };

            var cursor = MainActivity.ThisActivity.ContentResolver.Query(uri, projection, null, null, null);

            _contacts = new List<Contact>();

            if (cursor.MoveToFirst())
            {
                do
                {
                    var _contact = new Contact();
                    _contact.Address = new Address();

                    _contact.Id = (int) cursor.GetLong(cursor.GetColumnIndex(projection[0]));
                    _contact.DisplayName = cursor.GetString(cursor.GetColumnIndex(projection[1]));
                    _contact.Address.AddressLine1 = cursor.GetString(cursor.GetColumnIndex(projection[2]));
                    _contact.Address.AddressLine2 = cursor.GetString(cursor.GetColumnIndex(projection[3]));
                    _contact.Address.City = cursor.GetString(cursor.GetColumnIndex(projection[4]));
                    _contact.Address.State = cursor.GetString(cursor.GetColumnIndex(projection[5]));
                    _contact.Address.ZipCode = cursor.GetString(cursor.GetColumnIndex(projection[6]));

                    if (string.IsNullOrWhiteSpace(_contact.FirstName) && _contact.DisplayName != null)
                    {
                        string[] words = _contact.DisplayName.Split(' ');
                        _contact.FirstName = words[0];
                        _contact.NickName= words[0];
                        if (string.IsNullOrWhiteSpace(_contact.LastName))
                            _contact.LastName = words[1];
                    }

                    _contacts.Add(_contact);

                } while (cursor.MoveToNext());
            }

            return _contacts;
        }
        else
        {
            ActivityCompat.RequestPermissions(MainActivity.ThisActivity, new System.String[] { Manifest.Permission.ReadContacts }, 1);
            return null;
        }
    }
}
ニュービー

私は問題を見つけました。

私のURIはContactsContract.CommonDataKinds.StructuredPostal.ContentUriに向けられていました。

手動で入力した連絡先に住所がない場合、StructuredPostalデータモデルにはありませんでした。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Androidアプリケーションで連絡先ごとに誕生日を取得する

分類Dev

Androidアプリケーションを連絡先/電話帳にプログラムでリンクする

分類Dev

C ++アプリケーションのOutlookMAPI:名前で連絡先を検索する

分類Dev

電話の連絡先ブックからreact-nativeアプリケーションの連絡先を取得できません

分類Dev

CardDAVを使用してJavaアプリケーションの連絡先帳を共有する

分類Dev

iOSアプリケーションのメール連絡先

分類Dev

Android 6.0の連絡先から連絡先を選択した後、アプリケーションがクラッシュしました

分類Dev

アドレス指定可能なビューを使用してcrmアプリケーションで複数の連絡先を表示するcrmdynamics 2011

分類Dev

連絡先リストからアプリケーションを起動する

分類Dev

ABAddressBookRefを使用して電話帳から連絡先を取得しているときにアプリケーションがクラッシュする

分類Dev

連絡先アプリケーションの意図に連絡先が見つかりません

分類Dev

ボタンとコードをクリックしてアプリケーションからWhatsAppアプリケーションを開き、WhatsAppアプリケーションの検索連絡先バーに値を表示する方法

分類Dev

uwpアプリケーションの連絡先へのAppleiCloudアクセス

分類Dev

Xcode for iOSアプリケーションで連絡先ピッカーを作成するにはどうすればよいですか?

分類Dev

アプリケーションのリストビューから連絡先をエクスポートする

分類Dev

電話の連絡先リスト全体をアプリケーションデータベースに追加する

分類Dev

Androidを使用してアプリケーションに連絡します

分類Dev

.Net DynamicsCRMアプリケーションで連絡する親アカウントを保存する

分類Dev

連絡先は、Skypeやwhatsappなどの自分のアプリケーションと同期します

分類Dev

連絡先の注釈は、変換されたアプリケーションでは機能しません

分類Dev

連絡先番号はphonegapアプリケーションで繰り返されます

分類Dev

C#デスクトップアプリケーションを使用してyahooAPIから連絡先リストをインポートする方法

分類Dev

連絡先をquickbloxと同期し、Androidのカスタムチャットアプリケーション用にそれらのユーザーを取得します

分類Dev

ジェネリックアプリケーションの原因を特定する方法 'アプリケーションを起動できません。アプリケーションベンダーに連絡してください。ClickOnceエラー?

分類Dev

デバイスの連絡先アプリにカスタムインジケーターを追加する

分類Dev

Android アプリで都市のロケーション ID を取得する

分類Dev

XamarinFormsアプリケーションでのTouchID

分類Dev

Androidの連絡先リストから連絡先を取得する

分類Dev

ミラーAPIオプションのプロパティで連絡先を挿入する方法は?

Related 関連記事

  1. 1

    Androidアプリケーションで連絡先ごとに誕生日を取得する

  2. 2

    Androidアプリケーションを連絡先/電話帳にプログラムでリンクする

  3. 3

    C ++アプリケーションのOutlookMAPI:名前で連絡先を検索する

  4. 4

    電話の連絡先ブックからreact-nativeアプリケーションの連絡先を取得できません

  5. 5

    CardDAVを使用してJavaアプリケーションの連絡先帳を共有する

  6. 6

    iOSアプリケーションのメール連絡先

  7. 7

    Android 6.0の連絡先から連絡先を選択した後、アプリケーションがクラッシュしました

  8. 8

    アドレス指定可能なビューを使用してcrmアプリケーションで複数の連絡先を表示するcrmdynamics 2011

  9. 9

    連絡先リストからアプリケーションを起動する

  10. 10

    ABAddressBookRefを使用して電話帳から連絡先を取得しているときにアプリケーションがクラッシュする

  11. 11

    連絡先アプリケーションの意図に連絡先が見つかりません

  12. 12

    ボタンとコードをクリックしてアプリケーションからWhatsAppアプリケーションを開き、WhatsAppアプリケーションの検索連絡先バーに値を表示する方法

  13. 13

    uwpアプリケーションの連絡先へのAppleiCloudアクセス

  14. 14

    Xcode for iOSアプリケーションで連絡先ピッカーを作成するにはどうすればよいですか?

  15. 15

    アプリケーションのリストビューから連絡先をエクスポートする

  16. 16

    電話の連絡先リスト全体をアプリケーションデータベースに追加する

  17. 17

    Androidを使用してアプリケーションに連絡します

  18. 18

    .Net DynamicsCRMアプリケーションで連絡する親アカウントを保存する

  19. 19

    連絡先は、Skypeやwhatsappなどの自分のアプリケーションと同期します

  20. 20

    連絡先の注釈は、変換されたアプリケーションでは機能しません

  21. 21

    連絡先番号はphonegapアプリケーションで繰り返されます

  22. 22

    C#デスクトップアプリケーションを使用してyahooAPIから連絡先リストをインポートする方法

  23. 23

    連絡先をquickbloxと同期し、Androidのカスタムチャットアプリケーション用にそれらのユーザーを取得します

  24. 24

    ジェネリックアプリケーションの原因を特定する方法 'アプリケーションを起動できません。アプリケーションベンダーに連絡してください。ClickOnceエラー?

  25. 25

    デバイスの連絡先アプリにカスタムインジケーターを追加する

  26. 26

    Android アプリで都市のロケーション ID を取得する

  27. 27

    XamarinFormsアプリケーションでのTouchID

  28. 28

    Androidの連絡先リストから連絡先を取得する

  29. 29

    ミラーAPIオプションのプロパティで連絡先を挿入する方法は?

ホットタグ

アーカイブ